【发布时间】: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