問題使用jQuery AJAX與總asp.net web服務轉到錯誤:不是成功:
我有jQuery代碼的aspx頁面超過一個ASMX Web服務文件發送一個Ajax請求(在同一網站)。返回的響應不一致,但是,它始終激發「錯誤」jQuery回調,而不是「成功」回調。狀態碼在200,12030和12031之間不一致。消息到回調的responseText
在[blank]和json webservice返回的實際XML之間不一致。我調試了代碼,並且webservice實際上沒有任何例外地執行。
ASPX代碼
//代碼略去了
<script type="text/javascript">
jQuery(document).ready(function()
{
jQuery.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "CallDequeue.asmx/Dequeue",
data: "{}",
dataType: "json",
success: function(Msg)
{
alert('success:' + Msg.responseText);
},
error: function(Msg)
{
alert('failed:' + Msg.status + ':' + Msg.responseText);
}
});
});
</script>
//代碼ommitted爲簡潔
Web服務代碼
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class CallDequeue : System.Web.Services.WebService
{
[WebMethod]
public string Dequeue()
{
return "{\"d\":{\"FirstName\":\"Keivan\"}}";
}
}
我將Web服務代碼更改爲僅返回「Keivan」,並且它仍然調用error:callback,因爲響應以XML而不是JSON形式返回。這是一個.net 2.0網站。如何在返回字符串時使其返回純JSON? – 2009-12-05 21:02:23
使用幾個步驟更新了答案,這些步驟是使JSON序列化工作在2.0中所必需的步驟。 – 2009-12-05 21:23:10