2012-07-09 56 views
0

我有一個jQuery AJAX請求調用Web服務與結果字符串被返回=「測試!」。當我通過url進行請求時,它會返回:{「testResult」:「Tested!」}這對我來說很有意義。即使同一個URL返回內容,Jquery AJAX也會返回錯誤。這是爲什麼?

我的錯誤是,jQuery的AJAX請求,將命中web服務,命中一個斷點,並返回字符串,但仍然打錯誤代碼,而不是成功。

錯誤代碼如下:

//function(xhr,status,message) 
xhr.statusText = success 
status = parseerror 
message: Error Jquery17204... was not called. 

下面是我的AJAX請求。也許有什麼問題,我沒有得到,這是導致返回的代碼錯誤。

$.ajax({ 
      type: 'GET', 
      url: WEBSERVICE_URL + '/test', 
      dataType: 'jsonp', 
      success: function (result, textStatus, jqXHR) { 
       //success 
       result = JSON.parse(result); 
       var r = $(result.getWebFormDesignFieldContentsResult)[0]; 
       var div = $("<div class='modal'>").html(r.d); 
       /* 
       var d = document.createElement("div"); 
       d.className = "modal"; 
       d.appendChild(r[0]); 
       */ 
       $("div.modal").replaceWith(div); 
       $("div.modal #queryInput").val(opts); 
       $("div.modal").css({ 
        top: $(window).height()/2 - $("div.modal").height()/2, 
        left: $(window).width()/2 - $("div.modal").width()/2 
       }); 
       $("div.modal").fadeIn(); 
      }, 
      error: function (xhr, status, message) { 
       //error 
       //alert("Error: "+result.statusText); 
       alert("Error: " + status + " " + message); 

       //$("div.modal").replaceWith($("<div class = 'modal'>").html(result.responseText)); 
       //$("div.modal").fadeIn(); 
       $("div.overlay").fadeOut(); 
      } 
     }); 
+0

什麼是WEBSERVICE_URL?它是否在與運行此腳本的頁面不同的域或端口上?它是否返回有效的jsonp? (你向我們展示的jsonp是json,而不是jsonp) – 2012-07-09 15:40:59

+0

你是說AJAX調用返回JSONP數據('dataType:'jsonp') - 實際上是這種情況嗎?如果是,那麼jQuery會爲你解析它,你不需要在你的成功回調函數中執行'result = JSON.parse(result);'。 – 2012-07-09 15:42:28

+0

不同的域....我有2個服務器運行在不同的端口。 – Fallenreaper 2012-07-09 15:50:01

回答

0

你正在一個JSONP調用,所以從服務器返回的結果必須是這樣的:

Jquery17204({"testResult":"Tested!"}) 

服務器應採取的查詢字符串callback並作爲函數名使用。在這種情況下,AJAX請求發送callback=Jquery17204

+0

web服務返回一個字符串作爲每定義: [OperationContract的] [WebInvoke(方法= 「GET」, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = 「test」)] string test(); – Fallenreaper 2012-07-09 15:53:21

+0

我將如何調整operationContract,以便它正在做你所要求的? – Fallenreaper 2012-07-09 15:53:48

+0

@Fallenreaper:是的,服務器正在返回一個JSON響應,但你需要一個JSONP響應。 'WebMessageFormat'只包含XML和JSON,所以你必須使用一些完全不同的方式來返回JSONP結果。 – Guffa 2012-07-09 15:56:09

相關問題