我在 _layouts 目录中有一个 aspx 页面。我有一个
webmethod 被很好地调用并返回一个字符串(将填充另一个下拉列表的选项字符串)但是当我返回 ajax 时它会出错。
为什么我无法从返回的数据中获取字符串?我努力了
- 数据.d
- var obj = parseJSON(数据); 然后使用 obj.d
调用 Web 方法的客户端代码
function ProgramDropDown_OnChange() {
var selectedProgram = $("#<%= ddlProgram.ClientID %>").val();
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: '{"selectedProgram":"' + selectedProgram + '"}',
dataType: 'json',
url: 'Sdrl.aspx/ProgramDropDown_OnChange',
success: function (data) {
var obj = $.parseJSON(data);
$("#myInfoMessage").html("success: " + obj.d);
},
error: function (data) {
$("#myInfoMessage").html("failure: " + data.responseText);
}
});
}
错误消息是 jquery-1.9.1.min.js 中的语法错误
现在,如果我更改 web 方法以返回一个对象(匿名类型)
return new { DropDownData = myOptionsString };
然后我的客户代码更改为
function ProgramDropDown_OnChange() {
var selectedProgram = $("#<%= ddlProgram.ClientID %>").val();
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: '{"selectedProgram":"' + selectedProgram + '"}',
dataType: 'json',
url: 'Sdrl.aspx/ProgramDropDown_OnChange',
success: function (data) {
var obj = $.parseJSON(data);
$("#myInfoMessage").html("success: " + obj.d["DropDownData"]);
},
error: function (data) {
$("#myInfoMessage").html("failure: " + data.responseText);
}
});
}
我收到上面相同的错误消息。如果我现在尝试 obj.d,同样的事情如果我删除 $.parseJSON 并尝试数据,我会收到 [object, object]