我遇到了一个问题我提交了一个包含小数据的简单表单,当我在console
选项卡中检查时,ajax的URL似乎正在工作但是在处理完ajax之后它会发出错误警告它被重定向到我的主页,从控制台选项卡我有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));
}
答案 0 :(得分:41)
从您重定向到主页的描述中,但是在ajax响应部分中没有代码来执行此操作,我怀疑元素#add-comment是表单中的提交按钮。
如果是这种情况,那么当您单击#add-comment提交按钮时,您的表单可能会在运行ajax代码的同时提交。这可以解释内存错误,因为在页面重定向时ajax javascript被清除。
您需要阻止表单提交,并让success()或failure部分处理下一步(即刷新页面,更新注释框)。一种方法是改变
$("#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;">
根据我提供的信息,这是我最好的猜测。
答案 1 :(得分:5)
我在Firefox中测试时遇到了类似的问题。将按钮type
从submit
更改为button
对我有用。
<button type="submit" ...>Add comment</button>
到
<button type="button" ...>Add comment</button>
答案 2 :(得分:0)
我在通过Ajax执行搜索时出现此错误,当我尝试在HTML DOM中显示结果并解决问题时如下:
<强> $('..a place where the processed output Ajax request..').on('click', '#add-comment', function() {...});
强>
答案 3 :(得分:0)
我的问题通过改变
解决了<button onClick="save_order_info_into_database()">Save</button>
进入
<button type="button" onClick="save_order_info_into_database()">Save</button>
表示添加type="button"
解决了我的...