这是我在stackoverflow上的第一篇文章,所以请原谅我关于代码发布等方面的任何失礼,伙计们。
所以我正在编写这个社交网络,并且大部分事情都在工作,除了我无法弄清楚为什么我无法使用jQuery更新个人资料信息。它似乎只适用于第一个字段(名称),它将数据发布到服务器并返回。只要我想处理第二个字段(关于),它就会返回一个空框,并且不会插入数据。我尝试检查拼写,错别字等,但我认为错误在于逻辑。
.HTML:
<br/>Name<br/>
<input type="text" size="50" id="input_text" value="<?php echo getUser($_SESSION['user_id'], 'name'); ?>"/>
<input type="button" value="Change..." id="name_update_btn"/>
<br/>About<br/>
<input type="text" size="50" id="input_text_2" value="<?php echo getUser($_SESSION['user_id'], 'about');?>"/>
<input type="button" value="Change..." id="about_update_btn"/>
j查询:
$( document ).ready(function(){
$( '#name_update_btn' ).click( function(){
$.post( "update.php?person_name=true", {
person_name : $ ('#input_text').val()
}, function( data ){
$('#input_text').val( data );
})
});
$( '#about_update_btn' ).click( function(){
$.post( "update.php?about=true", {
about : $ ('#input_text_2').val()
}, function( data ){
$('#input_text_2').val( data );
})
});
});
PHP(更新.php):
if(isset($_POST['about'])==true){
update($_SESSION['user_id'], 'about', $_POST['about']);
}
if(isset($_POST['avatar'])==true){
update($_SESSION['user_id'], 'avatar', $_POST['avatar']);
}
if(isset($_POST['person_name'])==true){
update($_SESSION['user_id'], 'name', $_POST['name']);
}
有人可以帮助我吗?
我不是 php 专家,但在我看来,POST 的第二次使用应该用户person_name
而不是name
; 在update
方法调用中使用时...
所以像这样
if(isset($_POST['person_name'])==true){
update($_SESSION['user_id'], 'name', $_POST['person_name']);
}
也许你应该保持一致,要么使用name
要么person_name
,不要混合两者?
所以你的jquery是这样的
$.post( "update.php?name=true", {
name : $ ('#input_text').val()
}, function( data ){
$('#input_text').val( data );
})
你的PHP是这样的
if(isset($_POST['name'])==true){
update($_SESSION['user_id'], 'name', $_POST['name']);
}
您的 HTML 已经使用了name
value="<?php echo getUser($_SESSION['user_id'], 'name'); ?>"
使用 LIVE 方法更新您的 jquery 函数,例如 -
$('#name_update_btn').live('click', function(){
// code
});
本节错误
编辑:
现在我明白问题出在哪里了。 在 PHP 的最后一行中,你有 $_POST['name'],它应该是 $_POST['person_name']。除此之外 - 你不必做
if(isset($_GET['person_name'])==true){
这就足够了:
if(isset($_GET['person_name'])){
对于未来可能会遇到类似问题的人 - 我弄清楚了问题所在。在解决了伙计们善意指出的命名问题后,我意识到我的函数"更新"在这里使用:
if(isset($_POST['person_name'])==true){
update($_SESSION['user_id'], 'name', $_POST['person_name']);
}
没有返回任何值,看起来像这样:
function update($user_id, $field, $update){
$query = mysql_query("UPDATE `users` SET `$field` = '".$update."' WHERE `id` = ".(int)$user_id);
}
因此,没有返回任何值,也没有将任何值输入回表单。此处固定功能:
function update($user_id, $field, $update){
$query = mysql_query("UPDATE `users` SET `$field` = '".$update."' WHERE `id` = ".(int)$user_id);
$query2 = mysql_query("SELECT `$field` FROM `users` WHERE `id` = ".(int)$user_id);
while($row = mysql_fetch_assoc($query2)){
$updated = $row[$field];
}
return $updated;
}