我正在尝试使用 javascript $.Ajax 调用从 Web 服务中获取 JSON。
<script type="text/javascript">
$(function () {
$("#" + "@Model.BidObjectId").submit(function () {
alert("Test");
var param = { 'id': "@Model.BidObjectId" };
$.ajax({
url: "http://localhost:11523/Service1.svc/GetBidObject",
dataType: "jsonp",
contentType: "application/json;charset=utf-8",
type: "GET",
data: JSON.stringify(param),
success: function (msg) {
alert("success");
if (msg != null) {
return msg.URL;
}
},
error: function (msg2) {
alert(msg2);
}
});
return false;
});
});
</script>
我总是使用 parsererror 进入错误场景
状态:200 状态代码:函数(地图){状态文本:“解析器错误”
我已经在这里阅读了解释,但我不能使用 JSON,因为这会创建一些 OPTION 调用。我尝试将 POST 更改为 GET,以几种不同的方式(创建类等)返回数据,但我似乎无法弄清楚问题所在。只有 JSONP 的解决方案似乎被同意做一个正确的 GET 或 POST。其他解决方案甚至找不到我的网络服务。
这是我的网络服务的代码:
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "/GetBidObject?id={id}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string[] GetBidObject(string id);
和
public string[] GetBidObject(string id)
{
BidObject bidobject = new BidObject() { BidObjectId = 1, Title = "callback" };
JavaScriptSerializer ser = new JavaScriptSerializer();
string result = ser.Serialize(bidobject);
List<string> listResult = new List<string>();
listResult.Add(result);
return listResult.ToArray();
}
我不使用 ASP.NET,而是使用 Razor。
[编辑]
如果我在 Fiddler 中通过 json 更改 jsonp,我可以读取我的调用是OPTIONS http://localhost:11523/Service1.svc/GetBidObject?{%22id%22:%220%22} HTTP/1.1
使用 chrome。在 IE Fiddler 中什么也没检测到。ajax 调用从未完成......我真的不明白。