簡體   English   中英

JavaScript分配內存問題

[英]Javascript Allocation Memory Issue

我創建了一個頁面以將訂單插入mysql數據庫。 根據該命令,用戶可以添加任意數量的最多9個iten。 因此,我創建了一個字符串串聯循環。 起初我只使用了一個逗號串接(dados + =''),然后嘗試使用array.push來查看它是否可以解決分配內存問題,但是並沒有按預期進行(加載時間很慢並且再次陷入內存分配問題)

使用第一種方法,錯誤消息是:“分配大小超載”現在,當前錯誤消息是:“未捕獲的異常:內存不足”請看一下我的代碼,看看您的想法:)

function insertOrder(){
var counter = 0;
var lenz  = new Array();
var data;
var id      = 0;

var patientName  = $('#patientName').attr("value");
var phone1       = $('#phone1').attr("value");
var phone2       = $('#phone2').attr("value");
var email        = $('#email').attr("value");
var status       = $('#status').attr("value");
var atendantName = $('#atendantName').attr("value");
var referee      = $('#referee').attr("value");

$("select[name='lenz']").each(function(){
    if (counter == 0){
        lenz.push('lenzId='+$(this).val());
        counter++;
    }else{
        lenz.push('&lenzId'+counter+'='+$(this).val());
    }
    counter++;
}); 

for (counter < 9; counter++;){
    lenz.push('&lenzId'+counter+'=0');
}


counter = 0;

$("input[name='quant']").each(function(){

    if (counter == 0){
        lenz.push('quantity='+$(this).val());
        counter++;
    }else{
        lenz.push('&quantity'+counter+'='+$(this).val());
    }
    counter++;

});

for (counter < 9; counter++;){
    lenz.push('&quantityId'+counter+'=0');
}


var paymentMethod = $('#paymentMethod').attr("value");
var trancheNumber = $('#trancheNumber').attr("value");
var discount      = $('#discount').attr("value");
var totalAmount   = $('#totalAmount').attr("value");
var trancheAmount = $('#trancheAmount').attr("value");
var remarks       = $('#remarks').attr("value");

if(patientName == ''){
    alert('Patient Name is missing');
    return false;
}

if(confirm("Are you sure you want to include this order?")){
    data += lenz.join();
    alert(data);
    data += '&id='+id+'&patientName='+patientName+'&phone1='+phone1+'&phone2='+phone2+'&email='+email+'&status=';
    data += status+'&atendantName='+atendantName+'&referee='+referee+'&paymentMethod='+paymentMethod+'&trancheNumber='+trancheNumber+'&discount='+discount;
    data += '&totalAmount='+totalAmount+'&trancheAmount='+trancheAmount+'&remarks='+remarks;



    alert(data);

    $.ajax({
        type: "POST",
        url: caminho+"/view/includeOrder.php?acao=salvar",
        timeout: 20000,
        data: data,
        success: 
            function(data){
                if(jQuery.trim(data) == 'ok'){
                    alert('Order sucessfully included!');
                    if (id == 0){
                        $("#includeOrderform")[0].reset();
                        $("#select-patient").html('Paciente: <button class="btn btn-theme btn-search margintop10 pull-left" type="button" onCLick="popupCenter(\'selecionaPaciente.php\', \'selecionaPaciente\', 750, 500);" >Pesquisar</button>');
                    }else{
                        mostrarTela('maintainOrder');
                        $('html, body').animate({ scrollTop: 0 }, 'slow');
                    }

                }
                else{
                    alert('Error saving Order!');
                }
            }
    });
}
}

基本上,所有的for循環都是錯誤的:

for (counter < 9; counter++;)

它應該是

for (; counter < 9 ; counter++)

第一; 這是必需的,因為否則counter > 9成為賦值表達式/初始化塊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM