[c#]Ajax 调用带参数作为本地变量不工作

发布时间: 2017/2/25 3:51:51
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我在后面的代码,如下所示定义 webMethod。

 [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 传递作为参数不工作

解决方法 1:

不要手-组装 JSON。你会被你别指望在字符串中,你会错过分隔符等字符咬。

相反,使用 JSON stringifier:

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

如果 ID 值真的是一个数字 (你要接受它作为 int ),你会想要将它解析 (作为 this.id 是一个字符串):

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

......,但是你说的作品你硬编码示例使用一个字符串的 id,所以......

官方微信
官方QQ群
31647020