这是我第一次尝试使用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变量。任何人都可以证实这是正确的吗?
提前致谢!
答案 0 :(得分:1)
任何人都可以确认这是正确的吗?
这取决于您存储此脚本的域。由于浏览器内置same origin policy限制,您无法发送跨域AJAX请求。这意味着如果服务此脚本的页面未托管在http://172.16.2.45:8080
上,则此查询将无效。确保您不违反此政策的最佳方法是使用相对网址:
$.ajax({
type: 'Get',
url: '/Auth/login?n=dean&p=hello'
});
对于相同的源策略限制,有几种解决方法,但可能需要您修改您尝试使用的服务。这是一个nice guide,它涵盖了一些可能的解决方法,如果您需要执行跨域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。
答案 1 :(得分: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
}
});
答案 2 :(得分:1)
jQuery ajax function不会返回数据,而是返回jQuery jqHXR object。
您需要使用成功回调来处理数据,并且还要处理与Darin提到的相同的原始策略。