0

这是我第一次尝试使用 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 变量。谁能确认这是正确的?

提前致谢!

4

3 回答 3

1

谁能确认这是正确的?

这将取决于您存储此脚本的域。由于浏览器内置的相同来源策略限制,您无法发送跨域 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
    }
});

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

于 2012-05-23T08:10:56.833 回答
1
var returnedJson = $.ajax({
    type: 'Get',
    url: 'http://172.16.2.45:8080/Auth/login?n=dean&p=hello'
});

如果你这样做,这returnedJson将是一个 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
    }
});
于 2012-05-23T08:14:54.883 回答
1

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

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

于 2012-05-23T08:15:05.857 回答