如何通过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) 
    { 
    } 
} 
+0

现货在cdm上,你的第一块代码就是解决方案 – davey1990 2012-02-14 22:26:29

+0

太好了你实际上应该引用param的名字,例如“{\”param1 \“:”+ p1 +“}”但它实际上没有工作:) – cdm9002 2012-02-14 22:31:07

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

在WebService的

public void GetData(string parameterName) {}

+0

您好petrov,我也得到“无效的JSON原始”异常为您的解决方案。我也需要一个名为“GetData”的Web服务中的方法来检索这些数据吗? – davey1990 2012-02-14 22:05:12

+0

好的,我的解决方案不工作,因为我使用了相同的引号 – 2012-02-14 22:15:41

jQuery的取数据参数,并将其转换成适当的类型请求变量。

所以你使用这样的:

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

和jQuery做的工作休息你。

基于评论具体的例子:

data: { toSend: "test" } 
+0

感谢那个戴夫,但我仍然得到一个异常:“无效的JSON原始值:”... – davey1990 2012-02-14 22:03:39

+0

你可以发布ASMX函数的声明,你是试图发布到? – Dave 2012-02-14 22:05:54

+0

它确定戴夫,这种方式工作: ** data:'{“value”:“test”}',** – davey1990 2012-02-14 22:11:19