任何人都可以解释为什么我似乎使用Bootstrap模式从这个AJAX请求获得双重成功响应?
我回来了testtest
而不是test
。
我很确定通过查看控制台只有一个请求正在进行,我检查过脚本只被加载一次。
按钮触发脚本:
<a href="#" class="openNotesModal" data-note="<?=$view->action('thisNote',$RA,$question['q_ref'],$bID);?>"><i class="fas fa-pencil-alt">Notes</a>
Javascript (尝试先前在S.O上发现的修补程序有点令人费解。)
function openNotesModal() {
$('#notesModal').modal({
keyboard: false,
backdrop: 'static'
});
}
$('.openNotesModal').click(function() {
openNotesModal();
});
$('#notesModal').on('shown.bs.modal', function(e) {
jQuery.ajax({
url: $('.openNotesModal').attr('data-note'),
success: function(response) {
$('#notesModal #theNote').val(response);
console.log(response);
}
});
});
AJAX请求已路由到此方法
public function action_thisNote($ra,$qID,$bID = null)
{
echo "test";
}
应返回'test'但返回'testtest'
答案 0 :(得分:0)
修改我的AJAX调用被路由到的方法已修复此问题。这个问题实际上与我建立在其上的Concrete5 CMS有关。
控制器方法prefixed action_
通过网址路由,以便在表单提交时使用。我认为它们在提交表单后自动重定向,这导致我在引导模式中的AJAX请求出现问题。在返回我的值后调用exit();
函数会停止CMS的重定向和任何其他向前处理。
感谢@epascarello在上面的评论中通过建议明确检查AJAX请求之外的URL以帮助隔离问题来引导我进行修复。
修正了PHP函数/方法:
public function action_thisNote($ra,$qID,$bID = null)
{
echo 'test';
exit();
}