1

Asp.NetのC#コードにリクエストを送信するために使用$.ajaxしています。毎回、次のような応答(Firebugでチェックイン)でエラーが発生します。

{"Message":"Invalid JSON primitive: EmailAddress.","StackTrace":"   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n   at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n   at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n   at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}

data:{}からパラメータを削除すれば$.ajax問題ありません。サーバーへのデータ送信方法に問題があると思います。

私のクライアント側のコードは次のとおりです。functionsend_req(){

        $.ajax({
            url: "Demo.aspx/Demo_Method",
            contentType: "application/json; charset=UTF-8",
            type: "POST",
            data: {"EmailAddress": "abc@testmail.com"},
            success: function (response) {
                alert('Success' + response);
            }
        });
    }

また、Demo.aspx.csページコードは次のとおりです。

public partial class Demo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    [WebMethod()]
    public static void Demo_Method(string EmailAddress)
    {
        //Some code....

    }
}
4

3 に答える 3

2

EmailAddressパラメータを囲む引用符を削除します。

$.ajax({
   url: "Demo.aspx/Demo_Method",
   contentType: "application/json; charset=UTF-8",
   type: "POST",
   data: {EmailAddress: "abc@testmail.com"},
          ^^^^^^^^^^^^

   success: function (response) {
         alert('Success' + response);
   }
});
于 2013-03-12T08:09:11.590 に答える
0

私の呼び出しでは、を指定し、パラメーターdataType: "json"全体を引用符で囲みます。data

例えば

    $.ajax({
        url: "Demo.aspx/Demo_Method",
        contentType: "application/json; charset=UTF-8",
        type: "POST",
        dataType: "json",
        data: "{'EmailAddress':'abc@testmail.com'}",
        success: function (response) {
            alert('Success' + response);
        }
    });
于 2013-03-12T08:11:24.837 に答える
0

オブジェクトとしてではなく、文字列としてデータを渡すようにしてください。

例:

$.ajax({
        url: "Demo.aspx/Demo_Method",
        contentType: "application/json; charset=UTF-8",
        type: "POST",
        data:  '{"EmailAddress": "abc@testmail.com"}',
        success: function (response) {
            alert('Success' + response);
        }
    });
于 2013-03-12T08:15:38.473 に答える