0

我正在尝试使用 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 之前被“取消”(根据萤火虫)。实际上,它成功了大约 5 次,但似乎没有一个模式。我知道这样的事情是可能的,因为谷歌分析做到了。有任何想法吗?

4

1 回答 1

1

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

要防止事件的默认操作,请调用其preventDefault方法(尤其是在使用高级事件注册或仅从return false您的内联处理程序时。目前,您正在返回undefined.

于 2012-12-13T01:23:35.610 回答