Я создал контактную форму в aspx 3.5 и использую jQuery для отправки ее в веб-сервис (asmx).
Веб-сервис должен вернуть код успеха или ошибки. Проблема в том, что при веб-методе я получаю только одно значение, а не массив. Я новичок в 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
});
});
В firebug отправляет правильно:
{'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, которую я посылаю службе, и содержит все данные формы - я хочу десериализовать ее в массив строк или что-то вроде, и обработать его.
как я могу это сделать?