Así que aquí está mi problema. Estoy usando $ .ajax de Jquery para devolver una serie de valores a un método web. El método web toma los valores, crea un objeto y luego lo envía como json a la página de llamada. Una vez que recibo la respuesta, no puedo acceder a la respuesta y mostrar sus valores.Frustrado con la respuesta de Json
¿Alguien puede explicar lo que tengo que hacer para que esto funcione?
El script jQuery:
$(document).ready(function() {
$("#create").click(function() {
var name = $('#name').val();
var company = $('#company').val();
var location = $('#location').val();
var phonenumber = $('#phonenumber').val();
var country = $('#country').val();
$.ajax({
type: "POST",
url: "WebService.asmx/MakeEmployee",
data: "{name:'" + name +
"',company:'" + company +
"',location:'" + location +
"',phonenumber:'" + phonenumber +
"',country:'" + country +
"'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
AjaxSucceeded(msg.d);
}
});
});
function AjaxSucceeded(data) {
//var item = jQuery.parseJSON(data) // this doesn't work for me.
$("#response").html(
"<ul><li> " + data.Name +
"</li><li> " + data.Company +
"</li><li> " + data.Address +
"</li><li> " + data.Phone +
"</li><li> " + data.Country +
"</ul> "
);
};
});
El método web:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string MakeEmployee(string name, string company,
string location, string phoneNumber, string country)
{
Employee e = new Employee(name, company, location, phoneNumber, country);
return new JavaScriptSerializer().Serialize(e);
}
Y la respuesta que estoy recibiendo de vuelta:
{"d":"\"Name\":\"bob\",
\"Company\":\"google\",
\"Address\":\"home\",
\"Phone\":\"123\",
\"Country\":\"usa\"}"}
Esto es lo que creo que debería estar de vuelta:
{"Name":"bob",
"Company":"google",
"Address":"home",
"Phone":"123",
"Country":"usa"}
El error que consigo una vez que las páginas renders de nuevo es la siguiente:
•undefined
•undefined
•undefined
•undefined
•undefined
yo no lo he hecho bastante la forma en que lo estás haciendo aquí, pero me gustaría tratar de deshacerse de su uso del 'JavaScriptSerializer'. Simplemente devuelva su clase 'Employee' y el framework debería convertir eso a Json por usted. – CodingGorilla
Tienes razón en el dinero. La parte JavaScriptSerializer() estaba haciendo algo funky con mi respuesta json. Gracias por los consejos! – Chris