2012-10-02 30 views
0

我有下面的代碼返回一個JSON數組。我有把值轉換成HTML的輸入問題:對輸入值的JSON響應

$('#button-validate').live('click', function() { 
    $.ajax({ 
     url: 'index.php?route=sale/customer/addressValidation&token=<?php echo $token; ?>', 
     type: 'post', 
     dataType: 'html', 
     data: 'shipping_address_1=' + encodeURIComponent($('input[name=\'address[1][address_1]\']').val()) + '&shipping_address_2=' + encodeURIComponent($('input[name=\'address[1][address_2]\']').val()) + '&shipping_city=' + encodeURIComponent($('input[name=\'address[1][city]\']').val()) + '&shipping_region=' + encodeURIComponent($('select[name=\'address[1][zone_id]\']').val()) + '&shipping_zip=' + encodeURIComponent($('input[name=\'address[1][postcode]\']').val()), 
     beforeSend: function() { 
      $('.success, .warning').remove(); 
      $('#button-history').attr('disabled', true); 
      $('#history').prepend('<div class="attention"><img src="view/image/loading.gif" alt="" /> Validating</div>'); 
     }, 
     complete: function() { 
      $('#button-history').attr('disabled', false); 
      $('.attention').remove(); 
     }, 
     success: function(data) { 
      if (data['error']) { 
       $('div#warning').attr('display', false); 
       $('div#warning').after('<div class="warning" style="display: none;">' + json['error'] + '</div>'); 

      }else{ 
      $('#shipping_address_1').val(html['shipping_address_1']); 
      $('#shipping_address_2').val(html['shipping_address_2']); 
      $('#shipping_city').val(html['shipping_city']); 
      $('#shipping_zip').val(html['shipping_zip']); 
      } 
     } 
    }); 
}); 

JSON數組看起來像這樣在Firebug:

[{"shipping_address_1":"21497 CROZIER AVE","shipping_address_2":"","shipping_city":"BOCA RATON","shipping_region":"FL","shipping_zip":"33428"}] 

回答

1

首先,它不返回一個JSON對象,你在這裏定義:

dataType: 'html', 

變化,爲:

dataType: 'json', 

其次,你混你的結果對象遍佈全國各地:

success: function(data) { 

全部你的互動應該是data.something,你在這裏使用​​,在那裏使用html['string']

開始糾正這些,然後看看是否清楚如何繼續。如果沒有,我可以更新這個答案。

+0

非常感謝你 –

0

要訪問shipping_address_1做到:

data[0].shipping_address_1 OR data[0]["shipping_address_1"] ; 

還等什麼是html['shipping_address_1']?你的JSON對象在這裏是數據而不是HTML var。試試這個:

$('#shipping_address_1').val(data[0]["shipping_address_1"]); 
$('#shipping_address_2').val(data[0]["shipping_address_2"]); 
$('#shipping_city').val(data[0]["shipping_city"]); 
$('#shipping_zip').val(data[0]["shipping_zip"]); 
+0

當我嘗試這兩種選擇時,我得到一個未定義的錯誤! –

+0

試試這個console.log(data)..你怎麼看 –

0

您可以使用點符號或支架,以獲取信息:

有了點符號:

data[0].shipping_address_1 

用括號標記:

data[0]['shipping_address_1'] 

我建議用點號時可能,但如果你打算迭代固定數量的值,我建議使用第二種方法:

for(var i=1; i<6; i++) { 
    $('#shipping_address_' + i).val(data[0]["shipping_address_"+ i ]); 
} 

請記住:點符號寫入速度更快,也易於閱讀。另一方面,方括號表示法允許訪問包含特殊字符的屬性以及使用變量選擇屬性,如上面的示例所示。