Ajax 调用未调用服务器端,并且在 httpfox 中显示错误,因为 ajax post 调用中"Error loading content (NS_ERROR_DOCUMENT_NOT_CACHE



这里我从asp.net页面进行了一个简单的ajax post调用,显示了httpfox上的以下错误。"加载内容时出错(NS_Error_DOCUMENT_NOT_CACHED)"和

 error: function () { alert(arguments[2]); } 

的ajax调用显示警报消息为"内部服务器错误"

在这里,我创建了一个JSON数组,并将该JSON数组转换为JSON字符串,并将其作为参数传递给服务器端方法。

这是我的ajax调用

 $('#btnResult').on('click', function () {
            var myObject = new Object();
            $("#<%=GridProjectDetails.ClientID %>  tr").each(function () {
                var id = $(this).find("input[name*='ID']").val();
                var locationcode = $(this).find("input[name*='TextLocationCode']").val();
                var Location = $(this).find("input[name*='TextLocation']").val();
                myObject.id = id;
                myObject.locationcode = locationcode;
                myObject.Location = Location;
            });
            var myString = JSON.stringify(myObject);
            alert(myString);
            var exportdata = myString;
            $.ajax({
                type: "POST",
                url: "Default.aspx/ExportToExcel",
                data: exportdata,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (data) {
                    $("#Result").text(data.d);
                },
                error: function () { alert(arguments[2]); }
            });
        });
    });

这是我的服务器端代码

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string ExportToExcel(string details)
    {
        return "Message : Success";
    }

有什么想法吗?这里发生了什么?

试试这个:

$('#btnResult').on('click', function () {
        var myArray = [];
        $("#<%=GridProjectDetails.ClientID %>  tr").each(function () {
            var id = $(this).find("input[name*='ID']").val();
            var locationcode = $(this).find("input[name*='TextLocationCode']").val();
            var Location = $(this).find("input[name*='TextLocation']").val();
            var myObject = new Object();
            myObject.id = id;
            myObject.locationcode = locationcode;
            myObject.Location = Location;
            myArray.push(myObject);
        });
        var myString = JSON.stringify({details: JSON.stringify(myArray)});
        alert(myString);
        var exportdata = myString;
        $.ajax({
            type: "POST",
            url: "Default.aspx/ExportToExcel",
            data: exportdata,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                $("#Result").text(data.d);
            },
            error: function () { alert(arguments[2]); }
        });
    });
});

感谢您的回复。

今天我在谷歌上搜索了1个多小时后得到了答案

我学到的是,在使用string()方法发送json数据时,在服务器端我们需要将参数定义为对象。而不是任何其他格式,如string/int/bla-bla。。。。。

实际上,我的服务器端参数有一个错误。我把它从字符串修改为对象,它对我有效。在这里我定义了我修改后的答案。

        $('#btnResult').on('click', function () {
        var mydata = [];
        $("#<%=GridProjectDetails.ClientID %>  tr").each(function () {
            var myObject = new Object();
            var id = $(this).find("input[name*='ID']").val();
            var locationcode = $(this).find("input[name*='TextLocationCode']").val();
            var Location = $(this).find("input[name*='TextLocation']").val();
            myObject.id = id;
            myObject.locationcode = locationcode;
            myObject.Location = Location;
            mydata.push(myObject);
        });
        var myString = JSON.stringify({ details: JSON.stringify(mydata) });
        alert(myString);
        var exportdata = myString;
        $.ajax({
            type: "POST",
            url: "Default.aspx/ExportToExcel",
            data: exportdata,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                $("#Result").text(data.d);
            },
            error: function () { alert(arguments[2]); }
        });
    });
});

我的服务器端方法应该是

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string ExportToExcel(object details)
{
    return "Message : Success";
}

使用以下方法发送数据

 data: "{'details':" + myString "}",

相关内容

  • 没有找到相关文章

最新更新