AJAX 请求触发两次,而成功调用一次
Posted
技术标签:
【中文标题】AJAX 请求触发两次,而成功调用一次【英文标题】:AJAX request firing twice while success is called once 【发布时间】:2018-02-24 10:48:18 【问题描述】:我使用的是 laravel 5.4,我的 Ajax 功能每次被调用两次,因此我创建了两个用户,但是我想每次点击创建一个用户
实际上它包含另一个页面,而该页面没有它在
$(document).ready(function()
或任何类似的功能
$(document).on('click','#addproject',function()
但它们包含脚本标签 但如果我不包括它们,那么 Ajax 只会被调用一次 Ajax 调用:
$(document).on('click','#addproject',function()
$.ajax(
type:'get',
url:"!! URL::to('addProject') !!",
data:,
success:function(data)
console.log('success');
console.log(data);
console.log(data.length);
$("#newproject").fadeIn();
,
error:function()
,
);
);
路线:
Route::get('/addProject','HomeController@addProject');
控制器:
public function addProject(Request $request)
$project = new Project;
$data = array(
);
$project->create($data);
【问题讨论】:
在点击事件监听器里面放一个alert()
或者console.log()
来检查它是否显示两次?
是的,它被调用了两次
查看我提供的答案
@MayankPandeyz 没用
我在上面做了一些改动,请检查一下
【参考方案1】:
我解决了,原来是我用load()
加载这个页面,但我应该用window.location.href = "updateform";
加载这个页面
虽然非常基本的错误。
并且解决方案可能是我的应用程序特定的。
【讨论】:
【参考方案2】:也许您可以尝试使用.one() 方法。
<script type="text/javascript">
var handler = function(e)
$.ajax(
type:'get',
url:"!! URL::to('addProject') !!",
data:,
success: function(data)
console.log('success');
console.log(data);
console.log(data.length);
$("#newproject").fadeIn();
$('#addproject').one('click', handler);
,
error: function()
);
e.stopImmediatePropagation();
return false;
$('#addproject').one('click', handler);
一种方法将确保每个事件类型的每个元素最多执行一次处理程序。成功后需要重新绑定事件处理程序。
【讨论】:
但是在最后一次调用中调用了成功函数,所以我必须忽略第一个而不是第二个【参考方案3】:试试这个,
$("#addproject").on('click',function()
//your code here
);
而不是,
$(document).on('click','#addproject',function()
//your code
);
【讨论】:
以上是关于AJAX 请求触发两次,而成功调用一次的主要内容,如果未能解决你的问题,请参考以下文章
成功登录 API 请求后,Angular 会为每个 API 调用触发额外的 OPTION 请求