在JQuery中调用Web服务并将返回的Json分配给JS变量

这是我第一次尝试使用JQuery,Json和调用Web服务..所以请在这里忍受我。

我需要使用JQuery调用webserivce,然后返回一个Json对象,然后我想将其保存为javascript变量。 我试过写一些东西。 我只需要有人确认这确实是你做的。 在我实例化之前,可能会搞乱我公司服务器上的某些东西。 无论如何,这里是:

var returnedJson = $.ajax({ type: 'Get', url: 'http://172.16.2.45:8080/Auth/login?n=dean&p=hello' }); 

所以就是这样,使用JQuery调用web服务并将返回的jsonObject分配给javascript变量。 谁能证实这是正确的?

提前致谢!

 var returnedJson = $.ajax({ type: 'Get', url: 'http://172.16.2.45:8080/Auth/login?n=dean&p=hello' }); 

如果你这样做,则returnJson将是一个XHR对象,而不是你所追求的json。 您想在成功回调中处理它。 像这样的东西:

 $.ajax({ // GET is the default type, no need to specify it url: 'http://172.16.2.45:8080/Auth/login', data: { n: 'dean', p: 'hello' }, success: function(data) { //data is the object that youre after, handle it here } }); 

jQuery ajax函数不返回数据,它返回一个jQuery jqHXR对象 。

您需要使用成功回调来处理数据,并且还要处理与Darin提到的相同的原始策略。

谁能证实这是正确的?

这取决于您存储此脚本的域。 由于内置于浏览器中的原始策略限制相同 ,因此无法发送跨域AJAX请求。 这意味着如果服务此脚本的页面未托管在http://172.16.2.45:8080此查询将不起作用。 确保您不违反此政策的最佳方法是使用相对url:

 $.ajax({ type: 'Get', url: '/Auth/login?n=dean&p=hello' }); 

有相同的源策略限制的几种解决方法,但可能需要您修改您尝试使用的服务。 这是一个很好的指南 ,它涵盖了一些可能的解决方法,如果您需要执行跨域AJAX调用。

您的代码还有另一个问题。 您已将$.ajax调用的结果分配给某个returnedJson变量。 但这不是AJAX的工作方式。 AJAX是异步的。 这意味着$.ajax函数将在请求继续在后台执行时立即返回。 一旦服务器完成处理请求并返回响应,结果将在您需要订阅的success回调中可用,并且将自动调用:

 $.ajax({ type: 'Get', url: '/Auth/login?n=dean&p=hello', success: function(returnedJson) { // use returnedJson here } }); 

还有一个关于你的代码的评论:你似乎在调用一个执行身份validation并发送用户名和密码的Web服务。 为避免通过网络以明文forms传输此信息,强烈建议使用SSL。