2011-12-27 50 views
0

我想用jQuery調用一個asmx web服務方法,併爲data傳遞實際的JavaScript對象,並返回JSON。我能來最接近的是這樣的:

$.ajax({ 
    url: "WebService.asmx/HelloWorld", 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    data: JSON.stringify({ num: 12, name: "Adam" }), 
    dataType: "json", 
    success: function (data) { alert(data.d); } 
}); 

我怎樣才能成功地使這個電話沒有第一字符串化我的對象?

我想這(去除的contentType)

$.ajax({ 
    url: "WebService.asmx/HelloWorld", 
    type: "POST", 
    data: { num: 12, name: "Adam" }, 
    dataType: "json", 
    success: function (data) { alert(data.d); } 
}); 

但是,返回結果以XML,JSON不是。

這裏的Web方法:

[WebMethod] 
[ScriptMethod] 
public string HelloWorld(int num, string name) { 
    return ++num + name; 
} 

編輯

這裏的請求的報頭的截圖。很明顯,content-type被設置爲xml來應答。

enter image description here

回答

2
設置ResponseFormat: [的WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 公共字符串的HelloWorld(INT NUM,字符串名稱){ 返回++ NUM +名稱; } 剛一說明:ASMX不返回JSON用於獲取只發布


每Dave的評論

這是不可能與ASMX和ASPX JSON端點。他們需要application/json Content-Type和一個POST請求或者不需要JSON。

+0

看起來很有希望,但我仍然收回XML。我使用與第二個代碼示例相同的設置調用它 - 沒有contentType。我應該改變什麼嗎? – 2011-12-27 15:42:38

+0

你用什麼來確定格式?螢火/控制檯? – Joe 2011-12-27 15:44:36

+0

Chrome開發工具 - 這就是我所看到的:'<?xml version =「1.0」encoding =「utf-8」?> 13 Adam'另外,我的成功回調並不是解僱 - 至少我應該得到一個不確定的警報。 – 2011-12-27 15:46:58