Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获异常:Ajax进程内存不足_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 未捕获异常:Ajax进程内存不足

Javascript 未捕获异常:Ajax进程内存不足,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我遇到了一个问题,我正在提交一个包含小数据的简单表单,当我在控制台选项卡中检查时,ajax的URL似乎正在工作,但在处理ajax后,它将发出错误警报,并重定向到我的主页,从控制台选项卡中,我有一个奇怪的错误: 未捕获异常:内存不足 在我的ajax中,我只有以下简单代码: $("#add-comment").on('click', function() { var id = $('input[name=\'review_id\']').val(); var customer_id

我遇到了一个问题,我正在提交一个包含小数据的简单表单,当我在
控制台
选项卡中检查时,ajax的URL似乎正在工作,但在处理ajax后,它将发出错误警报,并重定向到我的主页,从控制台选项卡中,我有一个
奇怪的错误

未捕获异常:内存不足

在我的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是表单中的提交按钮

如果是这种情况,那么当您单击#AddCommentSubmit按钮时,您的表单可能会在运行ajax代码的同时提交。这可以解释在页面重定向时删除ajax javascript时出现的内存不足错误

您需要阻止表单提交,并让success()或failure部分处理下一步(即刷新页面、更新注释框)。一种方法是改变

$("#add-comment").on('click', function() {
     ... 

或者将提交按钮从

<button type="submit" ...>Add comment</button>
<button type="submit" ...>Add comment</button>
添加注释

添加注释
或者像这样更改表单标记

<form onsubmit="return false;">


这是我根据现有信息做出的最佳猜测。

在Firefox中测试时,我遇到了类似的问题。将按钮的
类型
提交
更改为
按钮
对我来说很有效

添加注释

添加注释

我在通过Ajax实现搜索时遇到了这个错误,当时我试图在HTML DOM中显示结果,并解决了以下问题:


$(“…处理的输出Ajax请求的位置…”。on('click','addcomment',function(){…})

我的问题通过更改

<button onClick="save_order_info_into_database()">Save</button>
保存
进入

保存

通过添加
type=“button”
解决了我的问题。

你好,杰里尔,这能帮到你吗?你成功地解决了这个问题吗?我想知道为什么OP没有被接受的答案。此解决方案应已解决问题,并且必须标记为已接受@drakes+1用于显示解决方案的关键点-如果要使用ajax,按钮类型不应为
type=“submit”
。否则,数据往往会被发布两次,首先是从表单提交按钮,然后在调用ajax时,抛出内存不足错误。谢谢,我使用jQuery步骤,我不能更改提交到按钮,但我添加了onsubmit=“return false;”并修复了它。@VolkanOzyilmaz我使用jQuery步骤,也有同样的问题。你能告诉我你在哪里添加了onsubmit=“return false;”?@HalfBloodPrince我真的很抱歉,我甚至不记得我用过哪个项目。如果有对你有用的答案,你介意标记为接受吗?如果没有,一般做法是发布自己的解决方案并将其标记为已接受,以便未来的访问者能够理解实际问题并确定解决方案。
<button type="submit" ...>Add comment</button>
<button type="button" ...>Add comment</button>
<button onClick="save_order_info_into_database()">Save</button>
<button type="button" onClick="save_order_info_into_database()">Save</button>