【问题标题】:jquery post not working and no errorjquery post不工作​​,没有错误
【发布时间】:2013-08-10 08:16:54
【问题描述】:

我有一个简单的单选按钮,用于使用 jQuery .post 将数据异步提交到脚本。单击按钮时,脚本不会越过 .post 行,并且不会返回任何错误。

// this part submits the button click
    $(document).ready(function() {
      alert('test 1');
      $("input:radio").change(function() {
          alert('test 2');
          $.post('http://google.com/', {'resolution':$(this).val()}, function(data) {
           alert('test 3');
         });
      });
    });

html 在这里:

<input type='radio' id='radio1' name='resolution'   checked/>
<input type='radio' id='radio2' name='resolution'  />

有一些额外的 CSS 用于美化这些单选按钮(使它们成为切换按钮)。

半工作示例是here

是什么阻止了 .post 行工作? (我应该会看到一个带有“test 3”的弹出窗口)。

【问题讨论】:

  • 只有在请求成功时回调函数才会运行。尝试改用 $.ajax() 并传入错误回调。有关指南,请参阅文档:api.jquery.com/jQuery.ajax
  • 同源策略阻止此操作 - 您无法跨域发出 AJAX 请求。对此有一些警告,但没有任何东西可以让您从客户端请求中抓取 Google 数据。为了证明这一点,如果您从小提琴中检查网络流量,您会看到请求返回 405 Method not allowed
  • 另外,您正在尝试选择 #resolution,但我没有看到 id 为 resolution 的元素
  • 脚本位于防火墙后面 - 以 google.come 为例 - 它发布到的页面当前回显“hello world” - 只有一行,没有逻辑。我已经更新了问题,将对#resolution 的引用更改为$this
  • 更新 - 我的接收脚本权限错误。更新了烫发,脚本现在可以工作了。感谢您的回复。

标签: jquery forms post radio-button


【解决方案1】:

您的 Ajax 帖子失败的原因有多种。

1) 当我尝试使用 Firebug 调试您的帖子时,很明显 Google 搜索 (www.google.com) 不接受帖子数据。返回“405 Method not allowed”的错误。这就是为什么您的帖子没有“成功”的原因。所以我将 URL 更改为 www.imgur.com 之类的 URL,或任何其他接受发布数据的 URL。

2) 为了让您的“测试 3”出现,您发布到的服务器或 URL 必须发回一些数据。如果帖子仍然成功但服务器发送空响应,则不会出现警报消息“测试 3”。尝试在您的服务器端回显某些内容。

【讨论】:

  • 脚本位于防火墙后面,因此我无法使用确切的脚本。实际脚本正在发布到另一个输出“Hello World”的 php 页面。
  • 尝试使用 Ajax。 $.ajax({ url:"&lt;URL&gt;", data:{ resolution: $('#resolution').val()}, type:"post", success:function(data){ alert("test 3"); } });
  • 脚本接收帖子数据的权限已关闭。一旦我更新了它,就会出现“test 3”警告框。标记你的答案在技术上是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 2013-03-21
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 2016-05-21
相关资源
最近更新 更多