如何在使用xhrPost时获取响应数据

时间:2013-08-18 13:14:05

标签: asp.net-mvc-4 dojo

我编写了以下代码来将参数传递给服务器,并获得响应。

实际上,我的回复应该是要在网格上打印的报告。

调试代码时,调试器会进入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;
}

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果您的服务器正确回答,报告数据将传递给已经解析的load回调,即作为对象。

结帐this jsFiddle以查看工作示例。

或者,您可以从函数返回deferred并处理then回调中的数据,如前面提到的jsFiddle中所示。

答案 2 :(得分:0)

我已经修改了我的代码,现在问题解决了。感谢那些为我的要求而努力的人。

    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);
        }
    }