0

我在 _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]

4

1 回答 1

0

可能是 SHarepoint 缓存问题,因为代码今天早上运行良好。

于 2013-08-09T14:19:19.957 回答