2010-06-21 60 views
2

我在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它字符串数组或类似的东西,并处理它。 我该怎么做?

回答

1

这个问题是不是在客户端 - 这是在服务器端 - 问题是,我派几个参数到Web服务,但功能得到只有一个:

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public string HelloToYou(string name) 

而正确的应该是:

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public string HelloToYou(string name, string company, string phone, string email, string questions) 

无论如何,感谢您的帮助!

+0

其他选项应该是在客户端创建一个复杂的对象,然后在服务器上将其反序列化为具有该复杂性的命名对象传递一个单一的服务器端对象。 – 2010-06-21 13:55:47

+0

马克你可以请给更多的信息/例子或链接到一些文章?谢谢 – eran 2010-06-22 04:49:57

+0

我使用的信息: http://stackoverflow.com/questions/2785441/asp-net-json-web-service-post-form-data 并发送复杂的对象为json。 谢谢 – eran 2010-06-22 06:14:06

0

您是否尝试过查看request.form集合?由于您正在发送请求并将参数作为数据传递给请求,因此它将在Request.Form中可用。

+0

当我看看this.Context.Request.Form时,它是空的。 我怎样才能得到我发送到Web服务的JSON字符串? – eran 2010-06-21 09:57:21

+0

好的,如果你的名字是正确的,那么我会建议你这样做:{param:{'name':'jhon','company':'example','phone':'123','email' :'[email protected]','questions':'hello'} } – 2010-06-21 11:16:12

相关问题