[英]How to pass a variable to webservice in $.ajax
我想向Web服务发送参数。 该参数必须是变量,而不是固定的字符串。编写以下代码时,Web服务被称为罚款并且可以完美执行。
$(document).ready(function() {
$.ajax({
type: "POST",
url: "JsonTestService.asmx/Test",
data:"{'url':'http://www.cramster.com'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg.d);
}
});
});
但是当我将以下代码更改为x是变量时,它不起作用。 您能否通过以下代码告诉我如何将变量传递给Web服务。
data:"{'url':x}",
你真的很亲近 不要将数据元素值括在引号中,即:
$(function() {
var dynamic_url = "http://www.example.com";
$.ajax({
type: "POST",
url: "JsonTestService.asmx/Test",
data: {
url: dynamic_url
},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg.d);
}
});
});`
通过将整个批次都用引号引起来,就不会对表达式进行评估。 我也建议同时使用两种语法来传递对象。 我认为它更清晰。
您必须引用整个JSON字符串的原因:
在对它们的请求中,ASP.NET AJAX脚本服务和页面方法理解并期望将参数序列化为JSON字符串。 这些参数是从POST数据中解析出来的,并用作您调用的方法的参数。
但是,如果您直接提供JSON对象作为$ .ajax调用的数据参数,则jQuery会将对象序列化为一系列要发布的k,v对,而不是将原始JSON传递给您的Web服务。
如果您有兴趣,可以在这篇文章中获得有关将jQuery与ASP.NET AJAX Web服务和页面方法结合使用时常见陷阱的更多详细信息。
您可能还对使用stringify方法使构造JSON字符串更简洁感兴趣。
以下应该工作:
$(document).ready(function() {
var x = 'http://www.cramster.com';
$.ajax({
type: "POST",
url: "JsonTestService.asmx/Test",
data: { 'url': x },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg.d);
}
});
})
您需要在data
参数两边加上引号。
每个jquery文档都将完整的json作为字符串是正确的,将x的值放入其中的显而易见的解决方案是:
data:"{\"url\":\"" + x + "\"}",
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.