我在后面的代码中定义了一个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
传递参数不起作用
答案 0 :(得分:1)
您应该将此行用作:
data: '{ "qid": "' + qID + '", "answerContent":"test" }'
答案 1 :(得分:1)
不要手工组装JSON。你会被字符串中你没想到的字符所咬,你会错过分隔符等。
相反,请使用JSON字符串:
data: JSON.stringify({qid: qID, answerContent:"test"}),
如果ID值确实是一个数字(您将其作为int
收到),则需要对其进行解析(因为this.id
是一个字符串):
data: JSON.stringify({qid: +qID, answerContent:"test"}),
// ------------------------^
...但是您所说的硬编码示例使用了ID的字符串,所以......