Asp.net mvc 4 使用xhrPost时如何获取响应数据

Asp.net mvc 4 使用xhrPost时如何获取响应数据,asp.net-mvc-4,dojo,Asp.net Mvc 4,Dojo,我已经编写了以下代码来向服务器传递参数,并获取响应 实际上,我的回答应该是在网格上打印一份报告 调试代码时,调试器将进入load参数,但我不了解如何获取所需的报表数据 如果我正在朝正确的方向前进,也请告诉我 function SearchUser() { var userName = document.getElementById("txtUserName").value; var firstName = document.getElementById("txtFirstName

我已经编写了以下代码来向服务器传递参数,并获取响应

实际上,我的回答应该是在网格上打印一份报告

调试代码时,调试器将进入load参数,但我不了解如何获取所需的报表数据

如果我正在朝正确的方向前进,也请告诉我

function SearchUser() {
    var userName = document.getElementById("txtUserName").value;
    var firstName = document.getElementById("txtFirstName").value;
    var lastName = document.getElementById("txtLastName").value;
    var applicationName = document.getElementById("txtApplicationName").value;
    var roleName = document.getElementById("txtRoleName").value;
    var locationType = document.getElementById("txtLocationType").value;
    var location = document.getElementById("txtLocation").value;
    var userType = document.getElementById("txtUserType").value;
    var isAdmin = document.getElementById("chkAdmin").checked;
    //ValidateSearchUser();
    //var str = "User name: " + userName + ", First name: " + firstName + "Last name: " + lastName + ", App. name: " + applicationName + ", Role: " + roleName + ", Location type: " + locationType + ", Location: " + location + ", User type: " + userType + ", Is Admin? " + isAdmin + "\nSearch functionality yet to be developed.";
    //alert(str);

    var searchUserParameters = { "pageIndex": "1", "pageSize": "100", "userName": ""+ userName +"", "firstName":""+ firstName +"", "lastName":""+ lastName +"", "userType":""+ userType +"", "appName":""+ applicationName +"", "roleName":""+ roleName +"", "LocationType":""+ locationType +"", "location":""+ location +"", "isAdmin":""+ isAdmin +"" };

    var xhrArgs = {
        //url: "postIt",
        postData: dojo.toJson(searchUserParameters),
        handleAs: "json",
        headers: { "Content-Type": "application/json", "Accept": "application/json" },
        load: function (data) {
           //I am not understanding what code to write here.
        },
        error: function (error) {
            alert("SVS error:" + error);
        }
    }


    var deferred = dojo.xhrPost(xhrArgs);



    return false;
}

假设已经实现了服务器端代码,则应该在加载函数处理程序的
data
参数中接收数据。
handleAs
参数被设置为
json
,这意味着它希望接收该格式的响应数据。您在客户端处理数据的确切方式将取决于您在服务器端对其进行的结构化。您说响应数据应该是一个要在网格上打印的报告,那么您需要做的是将该报告从
data
参数中取出,并将其添加到DOM中。如何准确地再次执行此操作将取决于您从服务器返回的确切内容,即预格式化的HTML、要格式化为HTML的原始数据等。

如果您的服务器正确响应,则报告数据将被传递到
load
回调,并已被解析,即作为对象

签出以查看工作示例


或者,您可以从函数中返回
deferred
,然后在
中处理数据
回调,正如您在前面提到的JSFIDLE中看到的那样。

我已经像下面那样修改了我的代码,现在问题已经解决了。感谢所有为我的要求而努力的人

    var xhrArgs = {
        postData: dojo.toJson(searchUserParameters),
        handleAs: "text",
        headers: { "Content-Type": "application/json", "Accept": "application/json" },
        load: function (data) {
            document.getElementById("searchUserOutput").innerHTML = data;
        },
        error: function (error) {
            alert("SVS error:" + error);
        }
    }

为什么参数的
url
参数被注释掉了?URL应该是此请求的目标控制器和操作,它将返回报告数据。看起来您可以使用我描述的内容来解析它。投票表决或者接受我的回答怎么样?:)