AngularJS ngResource使用JSON将数据发送到服务器并获得响应

时间:2013-09-02 14:32:37

标签: json angularjs ngresource

在我的角度JS应用程序中,我需要将数据发送到服务器:

"profile":"OLTP",
"security":"rsh",
"availability":"4",
"performance": {
     "TRANSACTION_PER_SEC":1000,
     "RESPONSE_TIME":200,
     "CONCURRENT_CONNECTION_COUNT":500,
     "STORAGE_SIZE":200,
     "TOTAL_CONNECTION_COUNT":500
}

作为回报我会得到

{"estimate" : 1600,"quoteid" : "Q1234"}

我试图用$ resource做到这一点,但我在语法上迷失了。

app.factory("VaaniEstimateService", function($resource) {
    var requestURL = "http://128.34.32.34:8080/enquiry";
    return $resource(requestURL, {callback: 'JSON_CALLBACK'}, { get: { method:'JSON'}, isArray:false });
});

能否请你帮我一下,让我走上正确的道路。

1 个答案:

答案 0 :(得分:0)

您必须使用JSONP方法并将JSON_CALLBACK关键字作为回调函数插入您的网址。

app.factory("VaaniEstimateService", function($resource) {
    return $resource("http://128.34.32.34:8080/enquiry?callback=JSON_CALLBACK", {}, {
        get: {
            method:'JSONP'
        },
        isArray:false
    }).get({
        profile:"OLTP",
        security:"rsh",
        availability:"4",
        "performance.TRANSACTION_PER_SEC":1000,
        "performance.RESPONSE_TIME":200,
        "performance.CONCURRENT_CONNECTION_COUNT":500,
        "performance.STORAGE_SIZE":200,
        "performance.TOTAL_CONNECTION_COUNT":500
    }, function (response) {
        console.log('Success, data received!', response);
    });
});

您的参数将作为查询参数发送。 Angularjs将自动生成回调的全局函数,并将其名称替换为JSON_CALLBACK关键字。您的服务器必须通过调用使用callback参数发送的函数将json作为javascript代码返回。例如,AngularJS将向该URL发出GET请求:

http://128.34.32.34:8080/enquiry?callback=angular.callbacks._0?availability=4&performance.CONCURRENT_CONNECTION_COUNT=500&performance.RESPONSE_TIME=200&performance.STORAGE_SIZE=200&performance.TOTAL_CONNECTION_COUNT=500&performance.TRANSACTION_PER_SEC=1000&profile=OLTP&security=rsh

您的服务器必须返回响应:

angular.callbacks._0({"estimate" : 1600,"quoteid" : "Q1234"});

希望这足以让你知道jsonp是如何工作的。