Chr*_*ris 7 c# asp.net jquery json
所以这是我的问题.我正在使用Jquery的$ .ajax将一系列值传回Web方法.Web方法获取值,创建一个对象,然后将其作为json发送回调用页面.一旦我收到回复,我就无法访问响应并显示它的值.
任何人都可以解释我需要做些什么来使这项工作?
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> "
);
};
});
Run Code Online (Sandbox Code Playgroud)
网络方法:
[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);
}
Run Code Online (Sandbox Code Playgroud)
而我回复的反应:
{"d":"\"Name\":\"bob\",
\"Company\":\"google\",
\"Address\":\"home\",
\"Phone\":\"123\",
\"Country\":\"usa\"}"}
Run Code Online (Sandbox Code Playgroud)
这就是我认为我应该回来的:
{"Name":"bob",
"Company":"google",
"Address":"home",
"Phone":"123",
"Country":"usa"}
Run Code Online (Sandbox Code Playgroud)
一旦页面再次呈现我得到的错误是这样的:
•undefined
•undefined
•undefined
•undefined
•undefined
Run Code Online (Sandbox Code Playgroud)
您的响应将已被解析为 JSON,因此它已经是一个对象...无需再次解析它,只需直接使用它,如下所示:
function AjaxSucceeded(data) {
$("#response").html(
"<ul><li> " + data.Name +
"</li><li> " + data.Company +
"</li><li> " + data.Address +
"</li><li> " + data.Phone +
"</li><li> " + data.Country +
"</ul> "
);
}
Run Code Online (Sandbox Code Playgroud)
包装{ d: ... }器是由 ASP.Net 添加的,这是正常行为。之后您的问题是元素未正确返回,您需要从 ASP.Net返回一个对象而不是字符串,最好是这样:
[WebMethod, ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Employee MakeEmployee(string name, string company,
string location, string phoneNumber, string country) {
return new Employee(name, company, location, phoneNumber, country);
}
Run Code Online (Sandbox Code Playgroud)
... EmployeeJavaScript 端有您想要的属性。让 ASP.Net 在这里处理序列化而不是直接执行,您将获得更清晰的整体响应。
| 归档时间: |
|
| 查看次数: |
2976 次 |
| 最近记录: |