为什么我从此AJAX请求获得双重响应?

时间:2018-02-28 21:32:06

标签: javascript jquery ajax bootstrap-modal bootstrap-4

任何人都可以解释为什么我似乎使用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'

1 个答案:

答案 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();
}