2011-02-19 66 views
1

我想調用我的本地主機上的一個webservice,它需要一個參數pkId並返回結果。 WebService運行完美,但是當我從JQuery調用時,它不返回任何數據。我嘗試了幾乎所有的組合來爲Web服務(數據)部分設置參數,但無法獲得任何結果,真正的痛苦是我沒有得到任何錯誤。使用jQuery調用參數化的asmx Web服務

$.ajax({ 
     type: "POST", 
     url: "http://localhost/WSTest/Service.asmx/AuthorGetById", 
     data: "{pkId :'" + pkId + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      return msg.d; 
     } 
    }); 
+0

如果您沒有實現錯誤回調,您如何判斷您是否未收到任何錯誤?此外,您的「成功」回調似乎沒有做任何事情比從回調返回。我假設你想用返回值做一些事情,不是嗎? – Keith

+0

請勿在[建議的修改]中發佈評論(http://stackoverflow.com/suggested-edits/7355);在您可以使用的每個答案下都有一個「添加評論」按鈕 –

+0

您是否在webmethod中添加了[[System.Web.Script.Services.ScriptService] 'ajax調用? – malinois

回答

0

這不是一個答案,但意味着幫助你達到那裏。


即使你有一個錯誤,你不會得到它,因爲你根本沒有處理錯誤。
同樣值得一看,因爲它的ASP.NET 3.5+功能,你的味精是否有'D'。
此外,不要返回msg.d嘗試提醒它。

樣品將是

$.ajax({ 
    type: "POST", 
    url: "http://localhost/WSTest/Service.asmx/AuthorGetById", 
    data: "{pkId :'" + pkId + "'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (msg) { 
     var datum = msg.hasOwnProperty("d")? msg.d : msg; 
     alert("Success" + datum); 
     } 
    error:function (xhr, ajaxOptions, thrownError){ 
     alert("Error"); 
    } 
}); 
1

成功被調用作爲從AJAX回調。這意味着它的結果會返回到AJAX jQuery函數,而不是您的函數返回AJAX調用。您需要將result.d off傳遞給另一個使用它的函數。你有沒有在你的成功函數中放置一個斷點來看看結果有什麼價值?

有關消費使用AJAX調用Web服務的信息,請訪問:

using jquery to consume aspnet json web services/

0

我找到了答案。 Actullay我正確地傳遞參數,並注意到在螢火蟲的反應,但無法趕上成功,因爲...我的網絡服務方法返回無效。我改變它返回字符串和boooom它工作正常。