2012-08-02 122 views
0

我有兩個form標籤。第二個根據第一個選項預先填充選項,通過發出Ajax請求。jquery語法幫助處理ajax數據

如果我將一些返回數據的示例傳遞給局部變量(請參見注釋行),數據將完美返回並實際預先填充第二個form

任何意見,將不勝感激,因爲我是JavaScript的新手,可能錯過了明顯的東西!我使用下面的代碼:

$(document).ready(function() { 
    $('#table').change(function() { 
     $.getJSON("/ajax_get", { 
      id : $(this).val(), 
      ajax : 'true' 
     }, function(data) { 
      /* 
      var data = [ 
       { 
        "optionValue":"actor_id", 
        "optionDisplay": "actor_id" 
       }, 
       { 
        "optionValue":"film_id", 
        "optionDisplay": "film_id" 
       }, 
       { 
        "optionValue":"priority", 
        "optionDisplay": "priority" 
       } 
      ]; 
      */ 
      var $persons = $('#fields').empty(); 
      $.each(data, function() { 
       $persons.append("<option value=" + this.optionValue + ">" + this.optionDisplay + "</option>"); 
      }); 
     }); 
    }); 
}); 
+1

在回調中運行'console.log(data)' - 數據是你期望的嗎? – Utkanos 2012-08-02 09:56:49

+0

我並不確定在哪裏放置console.log(數據),但我使用的是Firebug/Firequery,並且數據以註釋的var行的格式完全返回。 – user1570955 2012-08-02 12:25:22

+0

您應該提出一個問題或概述實際問題,以清楚您需要什麼幫助。 – 2012-08-02 12:45:44

回答

0

你使用jQuery所以this需求是$(this)

$.each(data, function() { 
    $persons.append("<option value=" + $(this).optionValue + ">" + $(this).optionDisplay + "</option>"); 
}); 
+0

感謝Valjas,但這並沒有工作。我只是不能解決爲什麼循環與數據表示爲一個變量,但不與返回的數據對象。 – user1570955 2012-08-02 22:05:47

+0

嘗試在函數()中添加一個元素。所以$ .each(數據,函數(item)然後調用item.optionValue等 – Valjas 2012-08-02 23:05:20

0

我learn't作出絕對肯定JSON語法的一個寶貴的教訓。它最終在返回的數據中是一個額外的逗號(由我在循環中操作數據的方式導致),使其成爲無效的JSON響應.JQuery循環和表單選項的放置很好,但無效的JSON數據導致腳本默默地失敗。 感謝那些給了advice.Cheers的人。