2016-12-24 10 views
0

私はこのようなAJAXポストを使用していたときに内部エラーがスローされます。JSONデータを文字列として動作しますが、オブジェクト

$.ajax({ 
     type: "POST", 
     url: "/AJAXServices.aspx/" + method, 
     data: params, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(data) { 
      successfunc(); 
     }, 
     error: function(data) { 
      errorfunc(); 
     } 
    }); 

私はこのような変数「のparams」を使用する場合:

var params = '{"QuestionID":"' + UpdateQuestion_ID + '", "NewText":"' + newText + '"}'; 

それは、働く

しかし、私はこのように変更します。

var params = { QuestionID: UpdateQuestion_ID, NewText: newText }; 

これは、サーバー側の内部サーバーエラーがスローされます。

は、リソースの読み込みに失敗しました:サーバーは500 の状態で応答し(内部サーバーエラー)

サーバー側の方法:

[WebMethod] 
    public static void UpdateQuestion(string QuestionID, string NewText) 
    { 
     .... 
    } 

答えて

1

私は最初の場合paramsが文字列であり、後者の場合はparamsがオブジェクトです。

私は、サーバが有効なjson文字列を期待していると思います。 paramsがオブジェクトであることを確認し、JSON.stringify()を使用して有効なJSON文字列に変換してから送信してください。

$.ajax({ 
    ... 
    data: JSON.stringify(params), 
    ... 
}); 
+0

作品。ありがとう@rckrd –

1

JavaScriptオブジェクトとJSONは非常によく似ていますが、小さな違いがあります。

有効なJSONにはキーが含まれている必要がありますが、JSオブジェクトキーは ""なしで書き込むことができます。例以下は

有効なJSオブジェクトであるが、無効なJSON

{ 名: "ラヴィ"、 国: "インド" }

ので、以下はAです同じ有効なJSON:

{ "name": "Ravi"、 "国":それは無効なJSONあるよう

さらに "インド" }、サーバー側では、それが壊れます。

あなたはhttp://www.jsoneditoronline.org/

ノートであなたのJSONを検証することができます:あなたは

JSONを使用して有効なJSONに任意のJSオブジェクトを変換することができます。stringify(JavaScript_Object);

例:

するvar A = {名: "ラヴィ"、国: "インド"} JSON

VARにJS-OBJから

変換b = JSON.stringify(a);

ここで、var bは有効なJSONです。

出力: "{" 名 ":" ラヴィ " "国": "インド"}"

関連する問題