我在aspx 3.5中构建了联系表单,我使用jQuery将它发送到web服务(asmx)。
Web服务需要返回成功或错误代码。问题是,在Web方法中,我只获得单个值而不是数组。我在ajax方面很新,我尝试了很多解决方案,但没有任何结果。请如果你只能解释我做什么的原则也是好的。如何使用jQuery将json数据发送到asmx(from aspx)?
这是客户端:
$(document).ready(function()
{
$("#submit").click(function(event)
{
$.ajax
({
type: "POST",
url: "RVContactFormMailer.asmx/HelloToYou",
data: "{'name': '" + $('#name').val() + "', 'company':'" + $('#company').val() + "', 'phone':'" + $('#phone').val() + "', 'email':'" + $('#email').val() + "', 'questions':'" + $('#questions').val() + "'}" ,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
AjaxSucceeded(msg);
}, error: AjaxFailed
});
});
在萤火其正确地发送:
{'name': 'jhon', 'company':'example', 'phone':'123', 'email':'[email protected]', 'questions':'hello'}
的ASMX码是(请忽略的名称,其例子:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService] // To allow this Web Service to be called from script, using ASP.NET AJAX or JQuery.
[ToolboxItem(false)]
public class RVContactFormMailer : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloToYou(string name)
{
return "Hello " + name;
}
}
当我调试我看到输入参数“名称”只包含一个字符串 - 我不知道如何获得完整的json字符串t我发送到服务并包含所有表单数据 - 我想desirialize它字符串数组或类似的东西,并处理它。 我该怎么做?
其他选项应该是在客户端创建一个复杂的对象,然后在服务器上将其反序列化为具有该复杂性的命名对象传递一个单一的服务器端对象。 – 2010-06-21 13:55:47
马克你可以请给更多的信息/例子或链接到一些文章?谢谢 – eran 2010-06-22 04:49:57
我使用的信息: http://stackoverflow.com/questions/2785441/asp-net-json-web-service-post-form-data 并发送复杂的对象为json。 谢谢 – eran 2010-06-22 06:14:06