Jquery AJAX表单发送两次,第二次发送,第一次作为URL响应
我需要异步发送表单。所以我写了一些代码Jquery AJAX表单发送两次,第二次发送,第一次作为URL响应,jquery,ajax,forms,Jquery,Ajax,Forms,我需要异步发送表单。所以我写了一些代码 $(文档).ready(函数(){ $(“#生成参数”).submit(函数(e){ generateBanners(); e、 预防默认值(); 返回false; }); }); 函数generateBanners(){ var data=$(“#生成_参数”).serializeArray(); $.ajax({ 数据:数据, 成功:函数(url){ $('#banners_gen').html(''); $('#横幅_gen')。附加($(' 但
$(文档).ready(函数(){
$(“#生成参数”).submit(函数(e){
generateBanners();
e、 预防默认值();
返回false;
});
});
函数generateBanners(){
var data=$(“#生成_参数”).serializeArray();
$.ajax({
数据:数据,
成功:函数(url){
$('#banners_gen').html('');
$('#横幅_gen')。附加($('
但有一个问题。请求发送了2次,第二次是url…作为第一个请求的响应。这是我见过的最奇怪的行为
所以我在谷歌上搜索了一下。有人说我应该在submit()
处理程序中执行$(这个)。取消绑定()
。但是我以后需要在不重新加载页面的情况下发送表单。所以我需要重新绑定处理程序。但这对我来说似乎不正确。有其他方法解决它吗?实际发生了什么
更新
处理操作的服务器端代码
$userPath = 'user/banners/generated';
$directory = $USER_FILE_DIR . $userPath;
$bannerName = Banner::generateFromTemplate($directory);
echo $USER_URL_PATH . "/" . $userPath . "/" . $bannerName;
exit(0);
那你就不需要表格了
<p id="generate_params">
<input type="hidden" name="campaign_id" value="202">
<input type="hidden" name="action" value="AJAX_BANNERS_GENERATE">
</p>
<input type="button" id="generate_params_button">
$("#generate_params_button").on('click', function () {
generateBanners();
});
$(“#生成参数按钮”)。在('click',函数(){
generateBanners();
});
…你只需要改变一下
到
为了避免绑定/取消绑定,您可以使用$(“body”).submit('generate_params',函数(e){…看看fiddler,看看标题是否有不同的HTTP代码。这可能是服务器试图验证请求的正常行为。@JonasGrumann结果是一样的。我仍然需要解除绑定。@Anon不同HTTP代码后的意思是什么?第一个响应是200 OK
,所以我相信这是客户端(jQuery)问题。此站点上的其他AJAX请求已正确发送(但它们不是通过表单发送的。提交)。我的意思是,有时这种行为会发生在我身上,我会查看fiddler,第一个请求是HTTP 401,第二个是200。深入研究问题,是浏览器在测试服务器的正确身份验证类型。不确定这里是否发生了这种情况。如果不是提交按钮,则不会触发表单的提交事件,而且他们的代码不会执行。这肯定不是答案。没有人说过只删除表单标记。好的,在调用generateBanners()时,您还稍微更改了选择器和事件类型
。如果没有表单,该函数将无法像当前那样运行,因为这就是它获取AJAX调用数据的方式。无论如何,表单并没有造成这里的问题,因此这肯定不是答案。您是正确的。generateBanners()中的第一行必须是:var data=$(“#generate_params>input”)。serializeArray();