我正在嘗試從javascript $ .Ajax調用的webservice獲取JSON。我的jQuery.ajax()parsererror是什麼原因?
<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的StatusCode:功能(圖){狀態文本: 「parsererror」
我已經讀過的交代here但我不能使用JSON,因爲這會創建一些OPTION調用。我嘗試將POST更改爲GET,以幾種不同的方式返回數據(創建類等),但我似乎無法弄清楚問題所在。只有JSONP的解決方案似乎同意做一個正確的GET或POST。其他解決方案不'甚至找不到我的web服務。
這裏是我的web服務的代碼:
[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但剃刀工作。
[編輯]
如果我在提琴手改變JSONP化JSON我可以讀我的電話是OPTIONS http://localhost:11523/Service1.svc/GetBidObject?{%22id%22:%220%22} HTTP/1.1
鉻。在IE Fiddler中沒有發現任何東西。 ajax調用從來沒有完成......我真的不明白。
什麼是響應? – cuzzea
@cruzzea在Fiddler? Fiddler中的響應是HTTP/1.1 405方法不允許。當我使用JSONP時,一切看起來都正確。在Fiddler中,我可以在JSON選項卡下看到我的JSON。 –
可能是您的服務器有問題,如果您訪問瀏覽器中的鏈接,您將得到與ajax調用相同的響應,並且是「cuzzea」,沒有r – cuzzea