如何通过AJAX POST将"数据"发送到ASMX Web服务?

dav*_*990 2 javascript ajax post

我可以成功从我的Web服务接收值,所以在那个方面,脚本工作正常.但是,我现在正尝试使用下面的"数据"字段将数据发送到Web服务.我无法弄清楚如何将一个简单的字符串(例如"测试")发送到Web服务,这是我的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);
}
Run Code Online (Sandbox Code Playgroud)

cdm*_*002 9

对于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) {}
});
Run Code Online (Sandbox Code Playgroud)

或者你可以hava一个对象并使用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) {}
});
Run Code Online (Sandbox Code Playgroud)

最后,您的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)
  {
  }
}
Run Code Online (Sandbox Code Playgroud)