我遇到一个问题,我正在提交一个包含少量数据的简单表单,当我在console选项卡中检查ajax的URL似乎正常时,但是在处理了ajax之后,它会发出错误提示,并将其重定向到我的主页,并从控制台选项卡我有这个weird error:
console
weird error
未捕获的异常:内存不足
在我的ajax中,我只有以下简单代码:
$("#add-comment").on('click', function() { var id = $('input[name=\'review_id\']').val(); var customer_id = $('input[name=\'customer_id\']').val(); var $comment = $('textarea[name=\'user_comment\']').val(); var sample = "test"; $.ajax({ url: 'index.php?route=product/product/writeSubComment', type: 'post', dataType: 'json', data: { text: sample }, beforeSend: function() { }, success: function(data) { console.log(data.test); }, error: function() { alert('ERROR!!!'); } }); });
在我的PHP控制器中,我具有此功能
public function writeSubComment() { $json = array(); $json['test'] = $this->request->post['text']; $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); }
从您重定向到主页的描述,但是在ajax响应部分中没有执行此操作的代码,我怀疑元素#add-comment是表单中的提交按钮。
如果是这种情况,那么当您单击#add-comment提交按钮时,您的表单可能会在运行ajax代码的同时提交。当页面重定向时,由于ajax javascript被清除,这将解释内存不足错误。
您将需要阻止表单提交,并让成功()或失败部分处理下一步(即刷新页面,更新评论框)。一种方法是更改
$("#add-comment").on('click', function() { ...
至
$('#add-comment').on('click', function(event){ event.preventDefault(); ...
或从更改提交按钮
<button type="submit" ...>Add comment</button>
<button type="button" ...>Add comment</button>
或像这样更改表单标签
<form onsubmit="return false;">
根据我所掌握的信息,这是我最好的猜测。