2017-03-07 94 views
0

我使用腳本來自動填充表單。當用戶從下拉菜單中選擇一個選項時,它會向外部文件(使用json_encode從數據庫返回數據)發出AJAX請求,並自動填充表單。自動解析和格式化JSON屬性名稱

下面的代碼:

function myrequest(e) { 
    var name = $('#username').val(); 
    $.ajax({ 
     method: "POST", 
     url: "autofill.php", 
     dataType: 'json', 
     cache: false, 
     data: { 
      username: name 
     }, 
     success: function(responseObject) { 
      $('#posts').val(responseObject.posts); 
      $('#joindate').val(responseObject.joindate); 
     } 
    }); 
} 

正如你看到的,當與ID username下拉改變,AJAX調用時,並用ID postsjoindate表單字段自動填寫。

但是,我想爲更多的表單使用相同的函數,這些表單將具有不同ID的字段自動填充(當然JSON將返回其他數據)。有沒有辦法修改這個函數,所以我不需要爲每個要分析的JSON值編寫一個單獨的行(如$('#posts').val(responseObject.posts);)。

換句話說,函數應該自動解析返回的JSON數據,如果有一個具有特定ID的字段,它應該被自動填充。因此,如果JSON返回像{"abc123":"666","some_other_field":"2017-03-06"}這樣的數據,函數應該相應地查找並預先填充ID爲abc123some_other_field的字段。

+0

大多數這類問題可以用括號表示法來解決。例如,responseObject [someVariable] = someOtherValue。假設someVariable ='abc123',這將用someOtherValue填充responseObject.abc123(如果該對象上不存在該屬性,它將創建它)。因此,您可以傳遞一組屬性名稱和值,具體取決於您希望設置對象的方式,然後您可以繼續。 –

回答

1

我想這樣的事情可以工作:

function myrequest(e) { 
    var name = $('#username').val(); 
    $.ajax({ 
     method: "POST", 
     url: "autofill.php", 
     dataType: 'json', 
     cache: false, 
     data: { 
      username: name 
     }, 
     success: function(responseObject) { 
      for (var prop in responseObject) { 
       if (responseObject.hasOwnProperty(prop)) { 
        $('#' + prop).val(responseObject[prop]); 
       } 
      } 
     } 
    }); 
} 
+0

似乎要做的伎倆。謝謝! –

+0

沒問題!如果這回答了您的問題,請標記爲答案。 – Arg0n