2011-04-18 307 views
0

我有一个js代码的价格,它一直困扰着我,因为最近几天,下面是代码段, 问题在于处理ajax响应。关于这个代码的奇怪之处是它在我的本地机器上工作正常,但在在线服务器中无法正常工作,我已经通过代码评论了这些问题。循环js数组和变量赋值不起作用

这段代码奇怪的是,当我把它上网,currFieldtempfieldDivId变量没有在所有的工作和temp变量(我加为了调试)打印在警报与正确的值。但它在开关情况下失败。 而在开关中,它总是落入默认选项并打印“不匹配”。

$.ajax({ 
       type: "POST", 
       url: "components/form/form_processing.php", 
       data: dataStringfrmFlds, 
       cache:false, 
       success: function(opt){ 

        alert(opt);// opt is fine, returns: ship_to,first_notify_party,consignee,shipment_type,packaging_requirements,testing_requirements,date,request_expected_date,order_ponunber 

        var defaultFields = opt.split(','); 
        var numFields = defaultFields.length; 

        for(i = 0; i < numFields; i++){ 
          var temp    = ""; 

          var currField   = defaultFields[i]; 
          var tempfieldDivId = "def_"+currField; 

          //these doesnt work 
          $(tempfieldDivId).show(); 
          $('#'+currField).attr('required','required'); 

          temp = currField; 
          alert(temp); //this does print the field name in the alert 

          //these doesnt work either  
          switch(temp){ 

           case "os_id": 
           $("#def_os_id").show(); 
           break; 

           case "ff_id": 
           $("#def_ff_id").show(); 
           break; 

           case "fnp_id": 
           alert("HI there"); 
           $("#def_fnp_id").show(); 
           break; 

           case "cinfo_id": 
           $("#def_cinfo_id").show(); 
           break; 

           case "order_date": 
           $("#def_order_date").show(); 
           break; 

           case "order_shiptype": 
           $("#def_order_shiptype").show(); 
           break; 

           case "order_portdis": 
           $("#def_order_portdis").show(); 
           break; 

           case "order_requestform": 
           $("#def_order_requestform").show(); 
           break; 

           case "order_specialinstructions": 
           $("#def_order_specialinstructions").show(); 
           break; 

           case "order_packreq": 
           $("#def_order_packreq").show(); 
           break; 

           case "order_testreq": 
           $("#def_order_testreq").show(); 
           break; 

           case "order_reqexdate": 
           $("#def_order_testreq").show(); 
           break; 

           default: 
           alert("No match");//this is printed out all the times 
           break; 
           }//end of switch 
         }//end of for loop 
        } 
      }); 

如果有人能帮助我,我将不胜感激。谢谢。

+0

你会得到任何错误? – Vivek 2011-04-18 06:57:32

+1

控制台日志'defaultFields'并查看数组的内部。它显示正确吗? – JohnP 2011-04-18 06:59:12

+1

打印控制台日志中的数组..因为它看起来对我很好...这应该工作.. – Vivek 2011-04-18 07:01:15

回答

2
  1. $(tempfieldDivId).show();您是否需要在tempfieldDivId之前添加“#”?
  2. optship_to,first_notify_party,consignee,shipment_type,packaging_requirements,testing_requirements,date,request_expected_date,order_ponunber 我没有看到任何人在你的switch声明匹配任何情况下,当然它会掉下来默认每次。
+0

我也指出了完全一样的东西... – Vivek 2011-04-18 07:06:07

+0

@ wong2这是非常有帮助的,是的,我忽略了在tempfieldDivId之前添加#。但我不明白为什么交换机会掉到默认值。如果你能详细说明它会很棒。 – Amitabh 2011-04-18 07:11:01

+0

aaah!我发现我一直很笨!我会检查变量和开关盒。 – Amitabh 2011-04-18 07:14:06