Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery AJAX表单发送两次,第二次发送,第一次作为URL响应_Jquery_Ajax_Forms - Fatal编程技术网

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();