簡體   English   中英

從C#WebMethod返回到JavaScript AJAX調用的內部服務器錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM