我在aspx 3.5中构建了联系表单,我使用jQuery将其发送到Web服务(asmx)。
Web服务需要返回成功或错误代码。问题是在web方法中我只得到单个值而不是数组。我是ajax的新手,我尝试了很多解决方案,但没有任何结果。如果你只能解释我做什么的原则也很好。
这是客户方:
$(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':'jhon@jhon.com', '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;
}
}
当我调试时,我看到输入参数“name”只包含一个字符串 - 我不知道如何获取我发送给服务的完整json字符串并包含所有表单数据 - 我想要取消它字符串数组或类似的东西,并处理它。 我怎么能这样做?
答案 0 :(得分:2)
问题不在客户端 - 它在服务器端 - 问题是我向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)
无论如何,感谢您的帮助!
答案 1 :(得分:0)
你试过看过request.form集合吗?由于您正在发布请求并将params作为数据传递给请求,因此它将在Request.Form中可用。