js在控制台中工作但不是从函数中工作

时间:2014-08-27 08:26:04

标签: javascript jquery ajax function

在返回来自ajax调用的数据后,我正在调用下面的函数。它执行第一个console.log(),其中包含来自ajax调用的数据。但是循环遍历的each()循环 - 不响应console.log。

primaSaveOrder.prototype = {

     start: function(response){

        console.log(response)

        $j('#primaId').val('');
        $j('#dialog').closest('.ui-dialog-content').dialog('close');


        $j.each(response['billing'], function(i, val) {
          console.log(response['billing'][i])
        });
    },
 }

我不认为我的代码太错了,因为如果我在控制台中手动创建一个等于 - console.log(response)输出的变量然后运行 ​​-

  $j.each(response['billing'], function(i, val) {
          console.log(response['billing'][i])
        });

它有效。我希望运行的是$j('#' + i).val(response['billing'][i])而不是console.log(response['billing'][i]

如果我直接在浏览器中而不是在文件中这样做,这也有效。我认为这是相关的,但我无法弄清楚如何解决它。

这是我正在迭代一些为隐私而改变的数据的例子

  {"billing":{"order-billing_address_firstname":"test","order-billing_address_lastname":"test","order-billing_address_street0":"6  test","order-billing_address_street1":"test","order-billing_address_city":"","order-billing_address_country_id":"GB","order-billing_address_region":"","order-billing_address_postcode":"16","order-billing_address_telephone":"","order-billing_address_vat_id":"","order-billing_address_prima_address_code":"0"},"shipping":{"order-shipping_address_firstname":"test","order-shipping_address_lastname":"test","order-shipping_address_street0":"6 test","order-shipping_address_street1":"test","order-shipping_address_city":"","order-shipping_address_country_id":"GB","order-shipping_address_region":"","order-shipping_address_postcode":"16","order-shipping_address_telephone":"","order-shipping_address_vat_id":"","order-shipping_address_prima_address_code":"0"}} 

2 个答案:

答案 0 :(得分:1)

可能是String的响应类型。在这种情况下,使用

将响应转换为json
response = JSON.parse(response);
在使用迭代响应之前

答案 1 :(得分:0)

我不会说,这会有所帮助,但有几件事情应该检查问题根目录:

  1. 检查元素是否存在,它们是否真的是唯一的(因为使用了ids)。 console.log(i, $j('#' + i).size())可以做到这一点。我相信可能没有设定价值的元素。
  2. 直接使用val参数,而不是通过response['billing'][i]引用它。虽然我不知道如何覆盖或隐藏response var,但让我们直接使用该值,因为它已经传递回调。