简体   繁体   English

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

[英]Updating inline doesn't work with symbols such as +

I've got the following table on a webpage: 我在网页上有下表:

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

I have this code which sends a request to ajax.php whenever a td is clicked: 我有这段代码,只要单击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: 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";
}
?>

The problem I have is with 3 of the fields - MCRC, Medals and Leave - the others all update fine. 我遇到的问题是3个字段-MCRC,奖牌和请假-其他所有字段都可以正常更新。

The MCRC field will either be empty or contain the + symbol. MCRC字段将为空或包含+符号。 Using firebug, this is the POST request when trying to send a +: 使用Firebug,这是尝试发送+时的POST请求:

在此处输入图片说明

As you can see, the + is removed in the parameters. 如您所见,参数中的+已删除。 The same goes for medals. 奖牌也是如此。

在此处输入图片说明

Leave seems to have a different issue. 休假似乎有另一个问题。 The parameters are fine but the database is not updated with the [TEST] 参数很好,但是数据库未使用[TEST]更新

If anyone could explain a way for me to send symbols/see what's going wrong with leave that would be great. 如果有人能为我解释一种发送符号的方式/看看请假出了什么问题,那将很棒。 Thanks. 谢谢。

Got it working by changing 通过更改使其正常工作

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

to

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM