0

私がやりたいことは次のとおりです。ユーザーがデータベースにクレジットカード番号を1つしか持っていない場合、テキストフィールドをページに表示しますが、ユーザーの複数のクレジットカード番号がデータベースに保存されている場合、テキストフィールドを表示する代わりにすべてを表示したいクレジット カード番号をコンボ ボックスに入力します。

以下は、私が得ている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 コードが含まれています)

jqueryeachループを使ってみましたが、できました。

以下は私のコードです:

$.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']);
}
}
});

助けが必要。

前もって感謝します。

4

1 に答える 1

1

これがあなたのコードになると思います。jquery hide/show/ .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);

  }
 });
于 2012-12-21T12:22:10.517 に答える