2017-03-07 8 views
0

私は、自動入力フォームを使用するスクリプトを使用します。ユーザーがドロップダウンからオプションを選択すると、AJAXは外部ファイル(json_encodeを使用してデータベースからデータを返します)に要求し、フォームは自動入力されます。 AJAX呼び出しが行われ、ID usernameとドロップダウンが変更された見ての通り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 postsjoindateとフォームフィールドが自動的に入力されている:

は、ここでは、コードです。

しかし、異なるIDを持つフィールドが自動入力されるようなフォームには同じ関数を使用したいと思います(JSONはもちろん他のデータも返します)。この関数を変更する方法はないので、解析するJSON値ごとに別々の行を書く必要はありません($('#posts').val(responseObject.posts);など)。

つまり、関数は返されるJSONデータを自動的に解析する必要があります。特定のIDを持つフィールドがある場合、そのフィールドは自動入力されます。したがって、JSONが{"abc123":"666","some_other_field":"2017-03-06"}のようなデータを返す場合、関数はID abc123some_other_fieldというIDを持つフィールドを見つけて事前に埋め込む必要があります。

+0

この種の問題のほとんどは、ブラケット表記で解決することができます。たとえば、responseObject [someVariable] = someOtherValueです。 someVariable = 'abc123'とすると、responseObject.abc123はsomeOtherValueで埋められます(プロパティがオブジェクトに存在しない場合は作成されます)。したがって、オブジェクトの設定方法に応じて、プロパティ名と値の配列を渡すだけで、そこに移動できます。 –

答えて

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

関連する問題