2016-12-27 11 views
0

私はコードの中に次のようにwebMethodを定義しました。ローカル変数としてパラメータを使用したAjax呼び出しが機能していません

[System.Web.Services.WebMethod] 
     public static string testCall(int qid, String answerContent) 
     { 
     log.Debug("this is call from jquery" + qid.ToString() + answerContent); 

      return "true"; 
     } 

私はこのメソッドをjqueryのajax呼び出しで以下のように呼び出しようとしています。

<script> 

     $(".submitBtn").click(function (e) { 

      alert(this.id); 
      var qID = this.id; 

      $.ajax({ 
       type: "POST", 
       url: '/default.aspx/testCall', 
       data: '{ "qid":' + qID + ', "answerContent":"test" }', 
       contentType: "application/json; charset=utf-8", 
       success: function() { 

       }, 
       failure: function (response) { 
        alert("fail"); 
       }, 
       dataType: 'html' 
      }); 
     }); 
      </script> 

しかし、これは機能しません。

ただし、以下のようにパラメータのハードコードされた値を渡しますが、正常に動作します。

data: '{ "qid":"1234", "answerContent":"test" }' 

しかしvar qIDあなたは、このラインを使用する必要があります

+0

'data:JSON.stringify({" qid ":qID、" answerContent ":" test "})で一度テストしてください。 – Satpal

+0

Webformsを正しく使用していると思いますか? – Valkyrie

+0

@Valkyrieeはい。 –

答えて

1

はJSONを手で組み立てないでください。 (ID値が実際の数である場合

data: JSON.stringify({qid: qID, answerContent:"test"}), 

:あなたはJSONのstringifierを使用し、代わりに

など、あなたが区切り文字を逃してよ、あなたは文字列に期待していない文字に噛まれてしまいます、

data: JSON.stringify({qid: +qID, answerContent:"test"}), 
// ------------------------^ 

...しかし、あなたが作品を言ったあなたのハードコードされた例では、IDの文字列を使用しています:あなたはthis.idが文字列であるとして、あなたが)(それを解析することをお勧めします)intとしてそれを受信して​​いますso ...

+0

これを試してもまだ動作していません。 –

+0

私が働いていることすべてを投稿しました。サーバサイドのハードコードされた値 "1234"はintに対して解析可能であり、なぜそれが働いたのかもしれません。しかし、はい私はこれを渡したい。私のために働いていない。 –

+0

さて、私はそれを聞いた。 "this.id"は整数値を持たないので、なぜ失敗したのでしょうか。謝罪いたします。私はパラメータの型をstringに変更していました。ご協力いただきありがとうございます。 –

1

を働いていないパラメータとして渡すと:

data: '{ "qid": "' + qID + '", "answerContent":"test" }' 
+0

いいえ、彼/彼女は本当にすべきではありません。 –

+0

それは働いていません。 –

関連する問題