得到“;未捕获的异常:内存不足”;在firebug中执行ajax调用

getting "uncaught exception: out of memory" in firebug doing an ajax call

本文关键字:firebug 执行 调用 ajax 内存不足 异常 得到      更新时间:2023-09-26

我一直在尝试使用chrome和firefox调试ajax调用。我在这两方面都是新手。当使用chrome进行debbuging时,我得到了一个ajax响应,最后两个参数(jqXHR, textStatus, errorThrown)为空,第一个是xhr状态0。我有时会说,因为我有时会得到xhr状态200,而参数textStatus, errorThrown正在打印解析错误和意外字符"<"。我一直在查看我的php代码现在是因为我一直在做一个测试:对每个php代码进行注释,并返回php从ajax调用中获得的相同$_POST['json'],我得到了相同的错误。我一直在看我的json,它的格式很好。我被所有这些错误和我不太理解的令人困惑的调试工具弄糊涂了,我转到了firefox和firebug,在那里我得到了另一个不同的消息:"未捕获的异常:内存不足"我一直在阅读其他一些开发人员提出的相同问题,并尝试了公认的答案,但我仍然找不到问题所在,这就是为什么我在这里发布我的代码,希望有人能提供帮助。非常感谢!

html代码:

                   <input type="submit" data-effect="mfp-zoom-out" value='Submit' onClick="setTypeAdvanced()" style= "
    position: relative;
    top: -152px;
    left: 129px;
" />

index.js:中的jscript代码

function setTypeAdvanced(){
    var advancedFormVars = {};
    /**SHOW*/
    if(document.getElementById('OfferID').checked == true){
        advancedFormVars['checkbox1'] = document.getElementById('OfferID').value;
    }
    if(document.getElementById('offerName').checked == true){
        advancedFormVars['checkbox2'] =document.getElementById('offerName').value;
    }
    if(document.getElementById('campaignID').checked == true){
        advancedFormVars['checkbox3'] = document.getElementById('campaignID').value;
    }
    if(document.getElementById('campaignName').checked == true){
        advancedFormVars['checkbox4'] = document.getElementById('campaignName').value;
    }
    if(document.getElementById('installs').checked == true){
        advancedFormVars['checkbox5'] = document.getElementById('installs').value;
    }
    if(document.getElementById('revenue').checked == true){
        advancedFormVars['checkbox6'] = document.getElementById('revenue').value;
    }

    /** FILTERS */
    if(document.getElementById('offerIDFilt').checked == true){
        advancedFormVars['checkbox7'] =  document.getElementById('offerIDFilt').value;
    }
    if(document.getElementById('publisherIDFilt').checked == true){
        advancedFormVars['checkbox8'] = document.getElementById('publisherIDFilt').value;
    }
    if(document.getElementById('publisherIDTextVal').value.length >'0'){
        advancedFormVars['checkbox9'] =  document.getElementById('publisherIDTextVal').value;
        publisherIDTextVal  =  document.getElementById('publisherIDTextVal').value;
    }
    if(document.getElementById('offIDTextVal').value.length > '0'){
        advancedFormVars['checkbox10'] =  document.getElementById('offIDTextVal').value;
    }
        /**GROUP BY*/
    if(document.getElementById('dates').checked == true){
        advancedFormVars['checkbox11'] = document.getElementById('dates').value;
    }
    if(document.getElementById('geos').checked == true){
        advancedFormVars['checkbox12'] = document.getElementById('geos').value;
    }
    if(document.getElementById('browsers').checked == true){//arreglar no coge checked, coge objeto html
        advancedFormVars['checkbox13']= document.getElementById('browsers').value;
    }
    if(document.getElementById('oS').checked == true){//arreglar coge undefined
        advancedFormVars['checkbox14'] = document.getElementById('oS').value;
    }


    /**ORDER BY*/
    if(document.getElementById('installsGroupBy').checked == true){
        advancedFormVars['checkbox15']= document.getElementById('installsGroupBy').value;
    }
    if(document.getElementById('revenueGroupBy').checked == true){
        advancedFormVars['checkbox16']= document.getElementById('revenueGroupBy').value;
    }
    advancedFormVars['none']= (typeof none=== 'undefined') ? 'default' : none;
    advancedFormVars['ASC']= (typeof ASC === 'undefined') ? 'default' : ASC;
    advancedFormVars['DESC']= (typeof DESC === 'undefined') ? 'default' : DESC;


    loadFormAdvanced(advancedFormVars);

}
function loadFormAdvanced(advancedFormVars){
    var json = JSON.stringify(advancedFormVars);
    $.ajax({
        url : 'AL_loadForm.php',
        type : 'POST',
        data : {
            json:json
        },
        dataType:'json',
        success : function(data) {
            alert(data);
        },
        error: function(jqXHR, textStatus, errorThrown) {
              alert('error '+errorThrown);
              alert('status '+textStatus);
              alert('xhr status '+jqXHR.status);
            }
    });
}

编辑以添加我的php代码:

<?php 
    if($_POST){ 
         if($_POST['json']){
              echo json_encode($_POST['json']); //also tryed echo($_POST['json']);
              } 
         }
?>

这是我的json:

{"checkbox1":"OfferID","checkbox2":"Offer Name","checkbox3":"CampaignID","checkbox4":"CampaignName","checkbox5":"Installs","checkbox6":"Revenue","checkbox7":"OfferID","checkbox8":"PublisherID","checkbox9":"some publisher","checkbox10":"some offer","checkbox12":"Geos","checkbox15":"Installs","none":"default","ASC":"default","DESC":"default"}

在ajax调用中发送之前,它已经从控制台日志中复制/粘贴:

var json = JSON.stringify(advancedFormVars);
console.log(json);
$.ajax({
    url : 'AL_loadForm.php',
    type : 'POST',
    data : {
        json:json
    },
    dataType:'json',
    success : function(data) {
        alert(data);

单击submit按钮时,您正在调用不带参数的setTypeAdvanced。该函数构建一个名为advancedFormVars的对象,并调用loadFormAdvanced(advancedFormVars)。在stringify变量之后,将其传递给AL_loadForm.php的AJAX POST请求。您将收到0作为状态代码,这可能意味着许多不同的东西(请参阅此部分)。基本上,您需要检查服务器的日志以了解发生了什么。它收到请求了吗?如果是,是否存在错误?此外,您需要检查浏览器控制台的"网络"选项卡,看看您收到了什么响应。<是一个很大的线索,这可能意味着你的服务器发回了一些HTML,这些HTML可能太大,可能是因为响应数据集太大,或者服务器没有很好地处理帖子。

编辑:

此PHP代码不正确:

<?php 
    if($_POST){ 
         if($_POST['json']){
              echo json_encode($_POST['json']); //also tryed echo($_POST['json']);
              } 
         }
?>

我假设你想知道请求是否是post,如果是,那么检查它是否有'json'元素,但$_POST是true,即使它是get请求,因为它是一个空的array,如果你没有'json'元素,$_POST['json']将导致错误。修改如下:

<?php 
    if($_SERVER['REQUEST_METHOD'] === 'POST'){ 
         if(isset($_POST['json'])){
              echo json_encode($_POST['json']); //also tryed echo($_POST['json']);
              } 
         }
?>

注意,您将其编码为JSON,然后想要alert。您不应该alert大型JSON字符串。请改用console.log