![](/img/trans.png)
[英]Javascript Ajax call to asp.net webmethod, Internal server error
[英]Internal Server Error returning from C# WebMethod to JavaScript AJAX call
我無法獲得AJAX調用來從C#WebMethod獲得收益。 它總是返回AJAX錯誤“內部服務器錯誤”。
一個按鈕調用JS函數:
<button id="btn" onclick="Create();">foo</button>
JS函數:
function Create() {
var data = {
value1: 'string 1',
value2: 'string 2',
value3: 'string 3'
};
$.ajax({
url: 'default.aspx/Create',
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ formData: data }),
async: true,
success: function (msg, status) {
alert("success " + msg.d);
},
failure: function (data) {
alert("failure " + msg.d);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus + " : " + errorThrown);
}
});
return false;
}
和C#WebMethod:
[WebMethod]
public static string Create(string data)
{
return "webmethod string";
}
誰能指出我的錯在哪里?
您正在返回一個字符串,但是成功方法需要json。 此處的Ajax文檔: http : //api.jquery.com/jquery.ajax/
數據類型屬性:
dataType(默認值:Intelligent Guess(xml,json,腳本或html))類型:String期望從服務器返回的數據類型。 如果未指定,則jQuery將嘗試根據響應的MIME類型來推斷它(XML MIME類型將產生XML,在1.4中,JSON將產生JavaScript對象,在1.4中,腳本將執行該腳本,而其他所有內容將是以字符串形式返回)。 可用的類型(並將結果作為第一個參數傳遞給您的成功回調)
將數據類型更改為“文本”
還將參數從“ formData”更改為“ data”
碼:
$.ajax({
url: 'default.aspx/Create',
type: 'POST',
dataType: 'text',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ data: data }),
success: function (data) {
alert("success " + data);
},
failure: function (data) {
alert("failure " + msg.d);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus + " : " + errorThrown);
}
});
3:d在此處編輯:您正在ajax調用中發送對象,但是服務器端的參數是字符串。 將其更改為具有與要發送的對象相同名稱屬性的類實例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.