关于在表单提交上使用JSONP的时间问题

时间:2012-12-13 01:20:29

标签: javascript forms jsonp

我正在尝试使用JSONP在服务器B的页面上提交表单时将数据推送到服务器A.

这是我的JS -

my.submitOrder = function () {

    var scriptTag = document.createElement('SCRIPT');
    scriptTag.src = ServerAUrl + "?" + urlData;
    scriptTag.type = "text/javascript";
    scriptTag.async = 0;

    document.getElementsByTagName('HEAD')[0].appendChild(scriptTag);

};

我希望当用户提交表单时执行此js,所以这里是我认为可以完成工作的HTML -

<form action="http://localhost:3348" onsubmit="return my.submitOrder();" >
    <input type="submit" value="submit"  />
</form>

提交正常,submitOrder函数执行,但我对ServerAUrl的调用在它到达服务器A之前被“取消”(根据firebug)。实际上,它成功了大约1次中的5次,但是没有似乎是一种模式。我知道谷歌分析可以做到这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您没有阻止提交事件,因此通常会在加载目标页面时发送表单。在卸载过程中,打开请求(例如JSONP脚本)被取消。

要阻止事件的默认操作,请调用其preventDefault方法(特别是在使用内联处理程序时使用advanced event registrationreturn false时)。目前,您正在返回{{1 }}