【问题标题】:Sending JSON through JQuery to Java通过 JQuery 将 JSON 发送到 Java
【发布时间】:2013-12-04 13:59:19
【问题描述】:

我有一个通过 post 方法接受 JSON 的 URL。它应该返回一个 cookie 和状态。

当我尝试以下操作时,(用户名和密码应该是我尝试发送的 JSON),我没有得到任何回应,有什么想法吗?

<script>
$.post("https://login-url",{"username":"user","password":"1234567890"},
function(data){
     alert("Data Loaded: " + data);
   }, "JSON" );    
</script>

更新:

在关注 DavidDorward 的评论后,我的代码如下所示:

<script>
$.ajax({
    url: 'https://loginurl',
    type: 'POST',
    data: '{"username":"user","password":"1234567890"}',
    contentType: 'application/json',
    dataType: 'text',
    success: function(msg){
     alert("Data Loaded win: " + msg);}

});

</script>

为了更好地描述我的错误,应该返回一个状态和一个 cookie。当我加载此页面 firefox 并使用 firebug 观看时,没有响应,并且标题中没有加载 cookie 信息。尽管它似乎确实命中了 URL,但这让我认为它仍然是数据的问题。虽然如果用户名和密码不正确,它应该返回一个错误,但事实并非如此。它只是始终返回“null”。

为了回答 mattb 的问题,登录 URL 只需要 JSON 格式和字符串数据类型的“用户名”和“密码”

【问题讨论】:

  • login-url 期望 JSON 数据包含在其中的请求参数的名称是什么?或者它是否期望单独的 usernamepassword 参数?
  • 更新了更多细节,马特!

标签: java javascript jquery json cookies


【解决方案1】:

如果您想使用 jQuery 使用 JSON 正文发出 POST 请求,那么您必须使用 ajax method 而不是更简单的替代方案之一。将 contentType 指定为“application/json”,将您的 JavaScript 对象转换为包含 JSON 的字符串,然后再将其分配给 data 属性。

【讨论】:

  • 感谢大卫,我已经更新了我的代码,但我似乎仍然遇到了问题 - 我已经更新了帖子。有什么想法吗?
【解决方案2】:

您的数据不会以这种方式作为 JSON 发送。

'dataType:服务器预期的数据类型。' http://api.jquery.com/jQuery.post/

试试:

{"json": '{"username":"user","password":"1234567890"}'}

【讨论】:

  • 我认为这是问题所在,但当我尝试您所说的时,它似乎并没有改变任何东西。你确定这使得数据 json 格式?
【解决方案3】:

在我看来,您遇到了某种 AJAX 跨域问题。例如,如果您正在运行的页面使用 http,而您尝试访问的 url 使用 https,您就会遇到这个问题。

结果往往如你所描述:没有回应

http://en.wikipedia.org/wiki/Same_origin_policy

问候, 托马斯·卡恩

【讨论】:

  • 嗯,我们都是 https,但我是 www2,他们是 app.sandbox。我认为这足以引起问题......知道任何可能的解决方案/解决方法吗?
  • 当我编写一个向 Spotify (developer.spotify.com) 元数据 API 发出请求的解决方案时,我使用 ASP.NET 构建了一个充当代理的 Web 服务。这使我可以在自己的域中发出 AJAX 请求,并且仍然可以从 Spotify API 获取外部数据。我不确定这是否是最简单的方法。
  • 你可以看看 JSONP (en.wikipedia.org/wiki/JSONP#JSONP),但我不确定在这种情况下是否能解决你的问题,假设问题与跨域策略有关。只是为了确保,再次仔细检查 jQuery AJAX 语法。 jQuery 中的 AJAX 帖子将静默失败,除非您注册了在错误发生时要调用的处理程序:api.jquery.com/ajaxError
【解决方案4】:

将参数 dataType 更改为“json”。您不一定需要包含 contentType

数据类型:'json'

【讨论】:

  • 我认为这个设置不起作用。 contentType 设置发送数据的格式。 Autor 发送 json,因此他将 contentType 设置为 jsondataType 设置服务器发送数据的格式。并且将任何数据转换为纯文本都没有问题。 (api.jquery.com/jQuery.ajax)
猜你喜欢
  • 2013-02-05
  • 2011-03-11
  • 1970-01-01
  • 2018-11-09
  • 2015-06-14
  • 1970-01-01
  • 2013-01-09
  • 2015-03-03
  • 2013-03-04
相关资源
最近更新 更多