Php 在jquery中动态生成组合框

Php 在jquery中动态生成组合框,php,javascript,jquery,json,Php,Javascript,Jquery,Json,我想做的是:如果用户在数据库中只有一个信用卡号,然后在页面上显示文本字段,我成功地做到了这一点,但如果用户的多个信用卡号已存储在我的数据库中,那么我不想显示文本字段,而是想在组合框中显示他的所有信用卡号 以下是我得到的ajax响应: { "fname": "abc", "lname": "xyz", "creditCardInfo": [ { "creditCardNumber": "378282246310005",

我想做的是:如果用户在数据库中只有一个信用卡号,然后在页面上显示文本字段,我成功地做到了这一点,但如果用户的多个信用卡号已存储在我的数据库中,那么我不想显示文本字段,而是想在组合框中显示他的所有信用卡号

以下是我得到的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
每个循环,但都能做到

以下是我的代码:

$.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']);
}
}
});
$.ajax({
类型:“POST”,
url:“+操作,
数据类型:“json”,
数据:formdata,
成功:功能(数据)
{
var userinfo=eval(数据);
警报(用户信息);
如果(userinfo['msg']=='fail'){
$(“.usrmsg”).show();
$(“.validate”).hide();
}
否则{
if(!$(“#fname1”).val())$(“#fname1”).val(userinfo['fname');
if(!$(“#lname1”).val())$(“#lname1”).val(userinfo['lname');
if(!$(“#billingCity”).val())$(“#billingCity”).val(userinfo['billingCity']);
如果(用户信息['creditCardInfo']){
$('#creditCardComboBox').show();
$(“#creditCardTextField”).show();
//$(userinfo['creditCardInfo'])。每个(函数(索引){
//警报(索引+':'+$(this.text());
//$(“#creditCardNumber选项[value=“+index['creditCardNumber']+”])。attr(“选定”、“选定”);
// });                                
$(“#creditCardType选项[value=“+userinfo['creditCardInfo']['creditCardType']+”])attr(“选定”、“选定”);
$(“#creditCardExpirationMonth选项[value=“+userinfo['creditCardInfo']['creditCardExpirationMonth']+”).attr(“选定”、“选定”);
$(“#creditCardExpirationYear选项[value=“+userinfo['creditCardInfo']['creditCardExpirationYear']+”])。attr(“选定”、“选定”);
}
if(!$(“#billingFirstName”).val())$(“#billingFirstName”).val(userinfo['fname');
if(!$(“#billingLastName”).val())$(“#billingLastName”).val(userinfo['lname');
if(!$(“#creditCardCVC”).val())$(“#creditCardCVC”).val(userinfo['creditCardCVC']);
}
}
});
我需要帮助


提前感谢。

我猜这将是您的代码。使用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);

  }
 });
$.ajax({
类型:“POST”,
url:“+操作,
数据类型:“json”,
数据:formdata,
成功:功能(数据)
{
//检查json数组的长度
var creditcardinfo=data.creditcardinfo
做
{
如果(creditcardinfo.length==1){
$(“#creditCardTextField”).show();
$(“#creditCardComboBox”).hide();
//设置creditcardText的值
$('#creditCardTextField').val(creditcardinfo[i].creditCardNumber);
}否则如果(creditcardinfo.length>1){
$('#creditCardComboBox').show();
$(“#creditCardTextField”).hide();
//假设您正在使用标签
var newOption=$('');
newOption.attr('value',creditcardinfo[i].creditCardNumber).text(creditcardinfo[i].creditCardNumber);
$(“#creditCardComboBox”).append(newOption);
}

}while(您从服务器得到的json响应不是有效的json,或者一定是输入错误。)请在@lalith:中检查您的响应,但我正在使用
eval
function:即
var userinfo=eval(数据)将其转换为数组;
@lalith:jsonlin.com检查并显示有效的json格式您的json数据包含类似12-01“}]的内容,但没有打开[。这是这里的输入错误还是这正是您得到的响应?不,您弄错了。!如果您从服务器得到的响应是json。您只需要使用“.”eval(数据)访问它不会自动将其转换为数组。请检查您的错误日志和console.log输出,相应地编辑您的问题。:但我如何生成组合框并迭代那里的信用卡号?更新的答案,检查这是否是您需要的。如果您认为您的问题已得到回答,请向上投票并接受答案。