更新内联不适用于+等符号

时间:2014-07-06 19:09:50

标签: javascript php jquery mysql ajax

我在网页上有下表:

<table class="table table-striped table-condensed">
        <thead>
          <tr>
            <center><th>Name</th><th>Rank</th><th>MOS</th><th>Tag</th><th>MOSTs</th><th>Prom. Date</th><th>DI</th><th>CMO</th><th>MCRC</th><th>Medals</th><th>Leave</th></center>
          </tr>
        </thead>
        <tbody>
            <?php 
                $rank = 'O-10';
                $result->execute();
                while($row = $result->fetch()) {
            ?>
            <tr>
            <td id="habbo_name:<?php echo htmlspecialchars($row['user_id']); ?>" contenteditable="true"><?php echo htmlspecialchars($row['habbo_name']);?></td>
            <td id="rank:<?php echo htmlspecialchars($row['user_id']); ?>" contenteditable="true"><?php echo htmlspecialchars($row['rank']);?></td>
            <td id="rating:<?php echo htmlspecialchars($row['user_id']); ?>" contenteditable="true"><?php echo htmlspecialchars($row['rating']);?></td>
            <td id="tag:<?php echo htmlspecialchars($row['user_id']); ?>" contenteditable="true"><?php echo htmlspecialchars($row['tag']);?></td>
            <td id="asts:<?php echo htmlspecialchars($row['user_id']); ?>" contenteditable="true"><?php echo htmlspecialchars($row['asts']);?></td>
            <td id="promotion_date:<?php echo htmlspecialchars($row['user_id']); ?>" contenteditable="true"><?php echo htmlspecialchars($row['promotion_date']);?></td>
            <td id="rdc_grade:<?php echo htmlspecialchars($row['user_id']); ?>" contenteditable="true"><?php echo htmlspecialchars($row['rdc_grade']);?></td>
            <td id="cnl_trainings:<?php echo htmlspecialchars($row['user_id']); ?>" contenteditable="true"><?php echo htmlspecialchars($row['cnl_trainings']);?></td>
            <td id="mcrc:<?php echo htmlspecialchars($row['user_id']); ?>" contenteditable="true"><?php echo htmlspecialchars($row['mcrc']);?></td>
            <td id="medals:<?php echo htmlspecialchars($row['user_id']); ?>" contenteditable="true"><?php echo htmlspecialchars($row['medals']);?></td>
            <td id="leave:<?php echo htmlspecialchars($row['user_id']); ?>" contenteditable="true"><?php echo htmlspecialchars($row['leave']);?></td>
            </tr>
            <?php   
                }
            ?>
        </tbody>
    </table>

我有这个代码,只要点击一个td就会向ajax.php发送一个请求:

<script type="text/javascript">
$(function(){
    $("td[contenteditable=true]").blur(function(){
        var field_userid = $(this).attr("id") ;
        var value = '$(this).text()' ;
        $.post('ajax.php' , field_userid + "=" + value, function(data){
        });
    });
});
</script>

ajax.php:

<?php
include 'functions/user.php';
if(!empty($_POST))
{
    foreach($_POST as $field_name => $val)
    {
        $field_userid = strip_tags(trim($field_name));

        $split_data = explode(':', $field_userid);
        $user_id = $split_data[1];
        $field_name = $split_data[0];
        if(!empty($user_id) && !empty($field_name))
        {
            $query = "UPDATE `personnel` SET $field_name = '$val' WHERE user_id = $user_id";
            $result = $con->prepare($query);
            $result->execute();
        } else {
            echo "Invalid Requests";
        }
    }
} else {
    echo "Invalid Requests";
}
?>

我遇到的问题是3个字段--MCRC,奖牌和请假 - 其他所有字段都更新。

MCRC字段将为空或包含+符号。使用firebug,这是尝试发送+:

时的POST请求

enter image description here

如您所见,参数中的+被删除。奖牌也一样。

enter image description here

离开似乎有一个不同的问题。参数很好,但数据库没有使用[TEST]

更新

如果有人能解释我发送符号的方式/看看假期出了什么问题会很棒。感谢。

1 个答案:

答案 0 :(得分:0)

通过改变

来实现它
var value = $(this).text();

var value = encodeURIComponent($(this).text());