jquery中的实时更新仅适用于一个表单字段



这是我在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;
}

最新更新