У меня есть веб-страница asp.net с использованием элементов управления html. Я хочу сохранить назначение в базу данных, отправив входные значения codebehind с помощью веб-метода, и я хочу, чтобы страница не обновлялась. Поэтому я использовал Ajax. в Ajax, функция success не работает и возвращает неопределенные.ajax data json using web method возвращает undefined
default.aspx:
<form id="form1" runat="server">
<input id="hName" name="hName" type="text" />
<input id="hSurname" name="hSurname" type="text" />
<input id="hPhone" name="hPhone" type="text" />
<input id="rNote" name="rNote" type="text" />
<select id="rTypeSelect">
<option value="1">A</option>
<option value="2">B</option>
<option value="3">C</option>
</select>
<input type="button" value="Save" id="btnSaveAppointment" name="btnSaveAppointment"/>
</form>
JQuery:
$("#btnSaveAppointment").live('click', function (event) {
name = $('#hName').val();
surname = $('#hSurname').val();
phone = $('#hPhone').val();
note = $('#rNote').val();
type = $("#rTypeSelect option:selected").text();
rdate = '01.09.2015';
rhour = '09.30';
var appointment= {};
appointment= {
_name: name,
_surname: surname,
_phone: phone,
_note: note,
_type: type,
_rdate: rdate,
_rhour: rhour
}
$.ajax({
type: 'POST',
url: '../saveAppointment.aspx/save',
data: { appointment: JSON.stringify(appointment) },
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: true,
success: function (result) {
alert(result);
},
error: function() {
alert('Error!' + result.d);
}
});
});
метод веб-saveAppointment.aspx:
public partial class saveAppointment : System.Web.UI.Page
{
[System.Web.Services.WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string save(string jsondata)
{
var output = JsonConvert.DeserializeObject<Appointment>(jsondata);
Appointment r = (Appointment)output;
r.Name= output.rName.ToString();
//sql code here
return r.Name;
}
и это класс:
public class Appointment
{
public int ID { get; set; }
public string rName{ get; set; }
public string rSurname { get; set; }
public string rPhone{ get; set; }
public string rNote{ get; set; }
public string rType{ get; set; }
public DateTime rDate{ get; set; }
public DateTime rHour{ get; set; }
}
Когда я удаляю параметр WebMethod (строка jsondata), функция успеха Ajax не прерывается. Но когда я устанавливаю параметр json, он терпит неудачу. Пожалуйста, покажите мне, где я делаю неправильно, спасибо!
Можете ли вы сказать нам, что вы изменили именно так, это может принести пользу будущих читателей – Izzy