2012-12-21 27 views
0

我想要做的是:如果用戶在數據庫中只有一個信用卡號碼,那麼將文本字段顯示到我成功完成的頁面上,但如果用戶的多個信用卡號碼已存儲在我的數據庫中,顯示文本字段我想顯示他的所有信用卡號碼到組合框中。在jquery中動態生成combox box

以下是Ajax響應我得到:

{ 
    "fname": "abc", 
    "lname": "xyz", 
    "creditCardInfo": [ 
     { 
      "creditCardNumber": "378282246310005", 
      "creditCardType": "AX", 
      "securityCode": "1234", 
      "expirationDate": "2020-02-01" 
     }, 
     { 
      "creditCardNumber": "6011000990139424", 
      "creditCardType": "DS", 
      "securityCode": "321", 
      "expirationDate": "2030-12-01" 
     } 
    ], 
    "creditCardNumber": "6011000990139424", 
    "creditCardType": "DS", 
    "creditCardCVC": "321", 
    "creditCardExpirationMonth": "12", 
    "creditCardExpirationYear": "2030" 
} 

(注:包含所有測試信用卡號碼和CVC代碼上面的響應)

我試圖使用jQuery each循環,但能做到這一點。

以下是我的代碼:

$.ajax({ 
type: "POST", 
url: "<?php echo $_SERVER['HOST']; ?>"+action, 
dataType: 'json', 
data: formdata, 
success: function(data) 
{ 
var userinfo = eval(data); 
alert(userinfo); 
if(userinfo['msg'] == 'fail'){ 
$(".usrmsg").show(); 
$(".validate").hide(); 
} 
else{ 

if(!$("#fname1").val()) $("#fname1").val(userinfo['fname']); 
if(!$("#lname1").val()) $("#lname1").val(userinfo['lname']); 
if(!$("#billingCity").val()) $("#billingCity").val(userinfo['billingCity']); 

if(userinfo['creditCardInfo']){ 
$('#creditCardComboBox').show(); 
$('#creditCardTextField').show(); 

// $(userinfo['creditCardInfo']).each(function(index) { 
// alert(index + ': ' + $(this).text()); 
// $("#creditCardNumber option[value="+index['creditCardNumber']+"]").attr("selected", "selected");         
// });         

$("#creditCardType option[value="+userinfo['creditCardInfo']['creditCardType']+"]").attr("selected", "selected"); 
$("#creditCardExpirationMonth option[value="+userinfo['creditCardInfo']['creditCardExpirationMonth']+"]").attr("selected", "selected"); 
$("#creditCardExpirationYear option[value="+userinfo['creditCardInfo']['creditCardExpirationYear']+"]").attr("selected", "selected"); 
} 

if(!$("#billingFirstName").val()) $("#billingFirstName").val(userinfo['fname']); 
if(!$("#billingLastName").val()) $("#billingLastName").val(userinfo['lname']); 
if(!$("#creditCardCVC").val()) $("#creditCardCVC").val(userinfo['creditCardCVC']); 
} 
} 
}); 

需要幫助。

在此先感謝。

+0

你從服務器得到的json響應不是一個有效的json,或者必須有一個錯字。在http://jsonlint.com/ –

+0

查看你的回覆@lalith:但是我使用'eval'函數將它轉換成數組:'var userinfo = eval(data);' – Sky

+0

@lalith:用jsonlin.com檢查並顯示有效的json格式 – Sky

回答

1

猜猜這將是你的代碼。使用jquery hide/show/use .innerHtml標籤來顯示你的內容。

$.ajax({ 
    type: "POST", 
    url: "<?php echo $_SERVER['HOST']; ?>"+action, 
    dataType: 'json', 
    data: formdata, 
    success: function(data) 
    { 
    //Check the length of the json array 
    var creditcardinfo = data.creditCardInfo 

    do 
    { 
     if(creditcardinfo.length==1){ 
     $('#creditCardTextField').show(); 
     $('#creditCardComboBox').hide(); 
     //Set value of creditcardText 
     $('#creditCardTextField').val(creditcardinfo[i].creditCardNumber); 

     }else if(creditcardinfo.length>1){ 
     $('#creditCardComboBox').show(); 
     $('#creditCardTextField').hide(); 
     //ASSUMING YOU Are using <select> tag 
     var newOption = $('<option>'); 
     newOption.attr('value',creditcardinfo[i].creditCardNumber).text(creditcardinfo[i].creditCardNumber); 
     $('#creditCardComboBox').append(newOption); 
     } 
    }while (i<creditcardinfo.length); 

    } 
}); 
+0

:但我怎樣才能生成組合框,並在那裏迭代信用卡號碼? – Sky

+0

已更新的答案,請檢查這是否是您需要的。如果您認爲您的問題得到解答,請上傳並接受答案。 –