获得"未被捕获的异常:内存不足"在firebug做ajax电话

时间:2015-11-20 12:59:59

标签: javascript php jquery json ajax

我一直在尝试使用chrome和firefox调试ajax调用。我两个都是新手。当使用chrome进行debbuging时,我得到了一个ajax响应,最后两个参数(jqXHR, textStatus, errorThrown)为空,第一个是xhr状态0.我有时说,因为我得到了一些xhr状态200和params { {1}}正在打印解析错误,并出现意外字符'。我一直在看我的PHP代码,而且这个'<'现在是因为我一直在做测试:评论每个PHP代码并返回php从ajax调用获得的textStatus, errorThrown,我得到了相同的错误。我一直在看着我的json并且状态良好。由于所有这些错误和混乱的调试工具让我感到困惑,我不太了解,我转向firefox和firebug,在那里我得到另一条不同的信息:"未被捕获的异常:内存不足" 我一直在阅读一些其他开发人员提出同样的问题,并尝试了接受的答案,但我仍然无法找到问题,这就是为什么我在这里发布我的代码,希望有人可以提供帮助。非常感谢!

html代码:

$_POST['json']

index.js中的jscript代码:

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

编辑添加我的PHP代码:

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);
            }
    });
}

这是我的json:

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

在ajax电话中发出之前,它已从控制台日志中复制/粘贴:

{"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"}

1 个答案:

答案 0 :(得分:1)

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

编辑:

此PHP代码不正确:

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

我假设你想知道请求是否发布,如果是,那么检查它是否有'json'元素,但$_POST是真的,即使它是get请求,因为那么它是一个空的array$_POST['json']会导致错误,如果你没有&#39; json&#39;元件。像这样修改它:

<?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