【问题标题】:AngularJS ngResource Send data to server with JSON and get responseAngularJS ngResource 使用 JSON 向服务器发送数据并获得响应
【发布时间】:2013-09-05 16:49:49
【问题描述】:

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

"profile":"OLTP",
“安全”:“rsh”,
“可用性”:“4”,
“表现”: {
     "TRANSACTION_PER_SEC":1000,
     “响应时间”:200,
     “CONCURRENT_CONNECTION_COUNT”:500,
     “STORAGE_SIZE”:200,
     “TOTAL_CONNECTION_COUNT”:500
}

作为回报,我会得到

{“估计”: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 });
});

能否请您提供一些东西让我走上正确的道路。

【问题讨论】:

  • 您的页面域是否与requestURL 不同?是否要以 JSONP 方法请求?
  • requestURL 会有所不同。 JSONP方法就可以了,你能给我一些细节吗?谢谢

标签: json angularjs ngresource


【解决方案1】:

您必须使用 JSONP 方法并在您的 url 中插入 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 的工作原理。

【讨论】:

  • 哇,谢谢。我明白了,现在我明白了。如果页面在同一个域中并且我请求为 JSON,我可以向您寻求解决方案吗?
  • 如果你从 URL 中删除 callback 参数并将方法设置为 GET(实际上是默认方法,所以不需要设置它),一切都可以使用 JSON 资源。
  • 非常感谢。它工作得很好!现在我明白 JSON 和 JSONP 之间的区别了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多