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

时间:2012-02-14 21:48:36

标签: javascript ajax post

我可以成功从我的Web服务接收值,因此在这方面,脚本工作正常。但是,我现在正尝试使用下面的“数据”字段将数据发送到Web服务。我无法弄清楚如何将简单的字符串(例如“test”)发送到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);
}

3 个答案:

答案 0 :(得分: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) {}
});

或者你可以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) {}
});

最后,您的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)
  {
  }
}

答案 1 :(得分:1)

jQuery获取data参数并将其转换为适当类型的请求变量。

所以你使用类似的东西:

data: { myParameterName: "myParameterValue", myParameterName2: "myParameterValue2" }

和jQuery为你完成剩下的工作。

基于评论的具体示例:

data: { toSend: "test" }

答案 2 :(得分:0)

data: "{"parameterName": "test"}"

WebService中的

public void GetData(string parameterName) {}