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

时间:2014-02-28 12:38:54

标签: javascript php jquery html

这是我在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"/>

jQuery的:

$( 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(update.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']);
} 

任何可以帮助我的人?​​

4 个答案:

答案 0 :(得分:1)

我不是PHP专家,但在我看来,POST的第二次使用应该是用户person_name而不是name;在update方法调用中使用时...

所以喜欢这个

if(isset($_POST['person_name'])==true){
    update($_SESSION['user_id'], 'name', $_POST['person_name']);
}

也许您应该保持一致,使用nameperson_name并且不要混用2?

所以你的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'); ?>"

答案 1 :(得分:0)

此部分错误

编辑:

现在我看到了什么问题。在PHP中的一行但最后一行你有$ _POST ['name'],它应该是$ _POST ['person_name']。此外 - 你不必做

if(isset($_GET['person_name'])==true){

这就足够了:

if(isset($_GET['person_name'])){

答案 2 :(得分:0)

使用LIVE方法更新您的jquery函数,如 -

$('#name_update_btn').live('click', function(){

      // code

});

答案 3 :(得分:0)

对于可能会遇到类似事情的未来人们 - 我弄清楚问题是什么。 在确定了命名问题之后,正如家伙们所指出的那样,我意识到我的功能“更新”在这里使用了:

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;
}