WebMethod Rückkehr JSON, aber die Antwort obj in meinem $.ajax () - callback wird nur ein string
Hier ist meine home-made-Serialisieren der Klasse:
public class JsonBuilder
{
private StringBuilder json;
public JsonBuilder()
{
json = new StringBuilder();
}
public JsonBuilder AddObjectType(string className)
{
json.Append("\"" + className + "\": {");
return this;
}
public JsonBuilder Add(string key, string val)
{
json.AppendFormat("\"{0}\":\"{1}\",", key, val);
return this;
}
public JsonBuilder Add(string key, int val)
{
json.AppendFormat("\"{0}\":{1},", key, val);
return this;
}
public string Serialize()
{
return json.ToString().TrimEnd(new char[] { ',' }) + "}";
}
}
Hier ist die Web-Methode
[WebMethod]
public static string GetPersonInfo(string pFirstName, string pLastName)
{
var json = new JsonBuilder().AddObjectType("Person");
json.Add("FirstName", "Psuedo" + pFirstName).Add("LastName", "Tally-" + pLastName);
json.Add("Address", "5035 Macleay Rd SE").Add("City", "Salem");
json.Add("State", "Oregon").Add("ZipCode", "97317").Add("Age", 99);
return json.Serialize();
}
Den Ajax-call client-Seite
$.ajax(
{
type: "POST",
url: "Default.aspx/GetPersonInfo",
data: JSON.stringify(name),
contentType: "application/json; charset=uft-8",
dataType: "json",
success: function (rsp) { SetPerson(rsp); },
error: function (rsp)
{
alert(rsp);
}
});
Und schließlich, meine callback-Methode
function SetPerson(rsp)
{
$('#fName').val(rsp.d.FirstName);
$('#lName').val(rsp.d.LastName);
$('#address').val(rsp.d.Address);
$('#city').val(rsp.d.City);
$('#state').val(rsp.d.State);
$('#zip').val(rsp.d.ZipCode);
SetPerson(rsp.d.Age);
}
rsp.d ist ein string, der enthält alle Eigenschaften, die ... die Eigenschaften selbst sind nicht definiert. Ich weiß, ich bin etwas fehlt einfach hier.
Zurückgegebenen string von server
"Person": {"FirstName":"Psuedomatt","LastName":"Tally-cox","Address":"5035 Macleay Rd SE","City":"Salem","State":"Oregon","ZipCode":"97317","Age":99}
- Können Sie uns zeigen, was den JSON-string, der vom server zurückgegeben aussieht?
- Battle aktualisiert die post einschließen, um die zurückgegebene Zeichenfolge
- Als ein beiseite, ich würde mal in die JavascriptSerializer und JavaScriptConverter Klassen und sparen Sie sich eine Kopfschmerz.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nicht manuell serialisieren der return Wert; ASP.NET wird es für Sie tun. Probieren Sie etwas wie dieses:
Wenn Sie brauchen, um wieder etwas mehr Dynamik, wie Ihr Beispiel zu tun scheint, können Sie einen anonymen Typ:
dynamic
geben.