2011-11-04 41 views
0

我試圖從另一個頁面(ajaxuseradd.psp)中獲取JSON格式的文本。然後,我嘗試將此文本插入到幾個文本框和/或選擇列表中。現在,我只是想做文本框。嘗試在選項值選擇時自動將文本插入文本框

這裏是我的代碼,一個很好的協議,其中給了我,因爲我不是所有熟悉jQuery的:從ajaxuser.psp

<script type="text/javascript" src="jquery-1.7.min.js"></script> 
<script type="text/javascript"> 
$('#username').change(function() { 
    var userName = $(this).val(); 
    $.ajax({ 
     type: 'GET', 
     url: 'ajaxuseradd.php', 
     data: { 
      uname: userName 
     }, 
     success: function(data, status, xhr) { 
      $.each(data, function(key, value) { 
       $('#' + key).val(value); 
      }); 
     }, 
     dataType: 'json' 
    }) 
}); 

</script> 
<form action="adduser.psp" method="get"> 
<fieldset> 
    <label for="uname">Username:</label> 
    <select name="uname" id="useruname" onchange="updateAdduser();"> 
<% 
Random Python Code That Isn't Important But Generates Option Values 
%> 


<%= options %> 

</select> 

</fieldset> 
<fieldset> 
    <label for="fname">First Name:</label> 
    <input type="text" name="fname" /> 
</fieldset> 
<fieldset> 
    <label for="lname">Last Name:</label> 
    <input type="text" name="lname" /> 
</fieldset> 
<fieldset> 
    <label for="email">Email:</label> 
    <input type="text" name="email"> 
</fieldset> 

輸出應該如下,或它們的一些變化。這將顯示在頁面ajaxuser.psp當參數UNAME =夢幻島使用,例如:

{"fname" : Neverland, "lname" : Conference Room, "email" : [email protected], "deptid" : deptid, "active" : active, "sentient" : sentient} 

所以我的代碼應該是這樣的?

<script type="text/javascript" src="jquery-1.7.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#username').change(function() { 
    var userName = $(this).val(); 
     $.ajax({ 
      type: 'GET', 
      url: 'ajaxuseradd.php', 
      data: { 
       uname: userName 
      }, 
      success: function(data, status, xhr) { 
     $("#fname").val(data.fname); 
       }); 
      }, 
      dataType: 'json' 
      }) 
     }); 
}); 


</script> 

編輯:這仍然不工作 - 我選擇一個下拉值,並沒有任何變化的任何領域。

+1

會發生什麼?什麼是回來的數據? –

+0

我的解決方案是否適合您? – Sam

回答

1

我看到的第一件事情是,你需要用的onChange處理在此:

$(document).ready(function() { 

}); 

所以它看起來像這樣:

$(document).ready(function() { 
    $('#username').change(function() { 
    var userName = $(this).val(); 
     $.ajax({ 
      type: 'GET', 
      url: 'ajaxuseradd.php', 
      data: { 
       uname: userName 
      }, 
      success: function(data, status, xhr) { 
       $.each(data, function(key, value) { 
        $('#' + key).val(value); 
       }); 
      }, 
      dataType: 'json' 
      }) 
     }); 
}); 

而且,這樣的:

$.each(data, function(key, value) { 
    $('#' + key).val(value); 
}); 

不會像你想象的那樣工作。你拿回屬性的一個對象,所以更像這樣:

success: function(data, status, xhr) { 
    $("#fname").val(data.fname); 
    .... 
},