2012-06-26 318 views
0

我正在嘗試從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調用從來沒有完成......我真的不明白。

+0

什麼是響應? – cuzzea

+0

@cruzzea在Fiddler? Fiddler中的響應是HTTP/1.1 405方法不允許。當我使用JSONP時,一切看起來都正確。在Fiddler中,我可以在JSON選項卡下看到我的JSON。 –

+0

可能是您的服務器有問題,如果您訪問瀏覽器中的鏈接,您將得到與ajax調用相同的響應,並且是「cuzzea」,沒有r – cuzzea

回答

0

JSON和查詢字符串是兩個不同的東西。通過GET(或POST)發送數據時,不需要使用JSON。

$.ajax({ 
    url: "http://localhost:11523/Service1.svc/GetBidObject", 
    dataType: "jsonp", 
    type: "GET", 
    data: param, 
    success: function (msg) { 
     alert("success"); 
     if (msg != null) { 
      return msg.URL; 
     } 
    }, 
    error: function (msg2) { 
     alert(msg2); 
    } 
}); 

jQuery將正確serailize param和生成的網址:

http://localhost:11523/Service1.svc/GetBidObject?id=123&callback=jquery1234 

然後,你可以閱讀從你的後端查詢字符串的id值。

+0

GET http:// localhost:11523/Service1.svc/GetBidObject?callback = jQuery15107805854997131974_1340728690721&{%22id%22:%220%22}&_ = 1340728692841 HTTP/1.1 我該如何獲取數據? –

+0

@DranDane:將數據返回到哪裏?你在問什麼?我不知道「webservices」是如何工作的,我只是注意到你的'.ajax'調用是錯誤的。 –

+0

我的webservice返回一個字符串列表(JSON)我想用這些新數據更新我的頁面。 –

相關問題