【发布时间】:2013-08-09 22:19:19
【问题描述】:
我在 _layouts 目录中有一个 aspx 页面。我有一个
webmethod 被很好地调用并返回一个字符串(将填充另一个下拉列表的选项字符串)但是当我返回 ajax 时它会出错。
为什么我不能从返回的数据中取出字符串?我试过了
- 数据.d
- var obj = parseJSON(data);然后使用 obj.d
调用网络方法的客户端代码
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]
【问题讨论】:
-
如何使用 Fiddler 查看通过电线传递的内容?
-
我不认为你使用提琴手,好主意。我使用了 Firebug,不用说我认为这是一个 SharePoint 缓存问题。因为我昨天测试的代码没有工作,正在工作。感谢您的想法!