【问题标题】:php lost + (plus) at the end of the variable when postphp在发布时在变量末尾丢失了+(加号)
【发布时间】:2017-12-03 17:11:24
【问题描述】:

我找不到任何地方,这是我认为的独特问题。

我想添加以加号结尾的成绩,例如 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中更改数据类型。

【问题讨论】:

  • + 在 URL 中具有特殊含义。
  • 我该如何解决这个问题。你能帮我解决这个问题吗

标签: javascript php jquery sql ajax


【解决方案1】:

如果你改变这个会发生什么:

$grade=urldecode($_POST["grade"]);

到这里:

$grade=$_POST["grade"];?

由于加号是一个 urlencoded 空格,而 $_POST 变量不需要解码,我猜你在这里不小心把它去掉了

【讨论】:

  • 现在它正在工作。非常感谢你和其他人。
【解决方案2】:

您面临的问题是查询中的+ 被解释为空格。只需使用 JSs 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) {}
       });

【讨论】:

  • 感谢您的努力。但同样的问题还在继续。你能用 encodeURIComponent 编辑 enocodeURIComponent 吗?
  • 好吧,我修正了错字。这仍然只给你“B”吗?
  • 是的。 $grade=urldecode($_POST["grade"]); 是错误的。我用$grade=$_POST["grade"]; 改变它
【解决方案3】:

使用 JavaScript 函数 encodeURIComponent 对变量值进行编码。

【讨论】:

  • 感谢您的努力。但同样的问题仍然存在。
猜你喜欢
  • 2020-01-07
  • 2013-04-16
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
相关资源
最近更新 更多