如何通过AJAX POST将“数据”发送到ASMX Web服务?
我可以成功地从我的Web服务接收值,因此,在这种情况下,脚本工作正常。不过,我现在正在尝试使用下面的'data'字段将数据发送到webservice。我无法弄清楚如何发送一个简单的字符串(例如“test”)到web服务,这是我的web方法期望的参数。如何通过AJAX POST将“数据”发送到ASMX Web服务?
任何帮助,非常感谢。例如:
function setQuestion() {
$.ajax({
type: "POST",
**data: "{}",** //how do i use this to send a string??
dataType: "json",
url: "http://someURL",
contentType: "application/json; charset=utf-8",
success: onSuccess
});
}
function onSuccess(msg) {
$("#questiontxt").append(msg);
}
对于ASMX,你需要通过数据对象的字符串化版本,因此,例如:
var data = "{param1:" + param1IsANumber +
", param2:\"" + param2IsAString + "\"}";
$.ajax({
data: data,
dataType: "json",
url: url,
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (result) {}
});
或者你也可以哈瓦对象并使用jquery-json
var data = {};
data.param1 = 1;
data.param2 = "some string";
$.ajax({
data: jQuery.toJSON(data),
dataType: "json",
url: url,
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (result) {}
});
最后,您的Web服务类必须是这样的:
[WebService(Namespace = "http://www.somedomainname.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class MyService : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void MyServiceCall(int param1, string param2)
{
}
}
data: "{"parameterName": "test"}"
:public void GetData(string parameterName) {}
您好petrov,我也得到“无效的JSON原始”异常为您的解决方案。我也需要一个名为“GetData”的Web服务中的方法来检索这些数据吗? – davey1990 2012-02-14 22:05:12
好的,我的解决方案不工作,因为我使用了相同的引号 – 2012-02-14 22:15:41
jQuery的取数据参数,并将其转换成适当的类型请求变量。
所以你使用这样的:
data: { myParameterName: "myParameterValue", myParameterName2: "myParameterValue2" }
和jQuery做的工作休息你。
基于评论具体的例子:
data: { toSend: "test" }
现货在cdm上,你的第一块代码就是解决方案 – davey1990 2012-02-14 22:26:29
太好了你实际上应该引用param的名字,例如“{\”param1 \“:”+ p1 +“}”但它实际上没有工作:) – cdm9002 2012-02-14 22:31:07