我找不到任何地方,这是我认为的独特问题。
我想添加等级结尾加上诸如B +,C +或D +。我可以添加A-,B-,C-和D-或任何其他A,B,C,D,F级。但是,当我想用加号添加变量时,它就消失了。有人可以在我的代码中看到任何问题。
index.php的一小部分
var subjectone = $('#selectedsubjectone :selected').val();
var courseone = $('#courseListone').val();
var gradeone = ($('#selectedGradeOne :selected').val());
var div = document.getElementById("dom-target");
var username = div.textContent;
username = username.trim().replace(/ /g, '%20');
if(gradeone != 'gradesvalue'){
var enrolledone ="username="+username+"&subject="+subjectone+"&grade="+gradeone+"&course="+courseone; //I CHECK THERE IS NO PROBLEM HERE. IT SHOWS WITH PLUS.
$.ajax({
type: "POST",
url: "updatecourse.php",
data: enrolledone,
success: function(data) {}
});
有两个类似的php文件,其中一个用于插入其中一个用于更新。 这是updatecourse.php
<?php
include_once "connection.php";
if(isset($_POST["username"]) && isset($_POST["subject"]) && isset($_POST["course"]) && isset($_POST["grade"])){
$nick = urldecode($_POST["username"]);
$subject=urldecode($_POST["subject"]);
$course=urldecode($_POST["course"]);
$grade=urldecode($_POST["grade"]);
echo "$nick - $subject - $course - $grade"; //IT SHOWS B, NOT B+ IN HERE.
$prep = $con->prepare("UPDATE enrolledtable SET grade=? WHERE nickname=? AND subject=? AND course=?");
$prep->bind_param("ssss", $grade, $nick, $subject, $course);
$send = $prep->execute();
if ($send == TRUE) {
echo "Courses added successfully";
//header('Location: index.php');
exit();
} else {
echo "Error: " . $con->error;
//header('Location: index.php');
exit();
}
}?>
在php部分B +变为B,C +变为C. php中的问题是什么?或者我应该在js中更改数据类型。
答案 0 :(得分:1)
您面临的问题是查询中的+
被解释为空格。只需使用JS encodeURIComponent()
对您的成绩进行编码。
var subjectone = $('#selectedsubjectone :selected').val();
var courseone = $('#courseListone').val();
var gradeone = ($('#selectedGradeOne :selected').val());
var div = document.getElementById("dom-target");
var username = div.textContent;
username = username.trim().replace(/ /g, '%20');
if(gradeone != 'gradesvalue'){
var enrolledone ="username="+username+"&subject="+subjectone+"&grade="+encodeURIComponent(gradeone)+"&course="+courseone; //I CHECK THERE IS NO PROBLEM HERE. IT SHOWS WITH PLUS.
$.ajax({
type: "POST",
url: "updatecourse.php",
data: enrolledone,
success: function(data) {}
});
答案 1 :(得分:1)
如果你改变了这一点会发生什么:
$grade=urldecode($_POST["grade"]);
到此:
$grade=$_POST["grade"];
?
由于加号是一个urlencoded空间,并且$_POST
变量不需要解码,我猜你在这里意外剥离
答案 2 :(得分:0)
使用JavaScript函数encodeURIComponent对变量值进行编码。