【问题标题】:JS variable to PHP to Mysql queryJS 变量到 PHP 到 Mysql 查询
【发布时间】:2013-11-01 06:00:48
【问题描述】:

我正在尝试使用 ajax post 将 JS 变量发送到我的 PHP

 function post(){

       $.ajax({url:"myPHP.php", 
              data: {name: "John"},
              type: 'post',
              success: function(data){
              return true;    
              },
         });
    }

它发送到我的 PHP,但假设我试图提醒变量以确保我什么也没得到,但它仅在我对变量进行编码时才有效。

PHP

session_start();

$EID   = isset($_POST["name"])?$_POST["name"]:""; 

$EID = json_encode($EID);   
$_SESSION['EID'] =$EID;
echo "alert($EID);";

现在在另一个 PHP 文件中,我想对该变量执行一些操作,但它不起作用。就像没有设置变量一样。

session_start();

 $EID = $_SESSION['EID'];


    // Connect to MySQL
         if ( !( $database = mysql_connect( "localhost",
            "root", "" ) ) )                      
            die( "Could not connect to database </body></html>" );

    // open Events database
         if ( !mysql_select_db( "db", $database ) )
            die( "Could not open db database </body></html>" );

     $result = mysql_query ("SELECT * FROM database WHERE ID = '$EID' ")
     or die ('Error updating database because: '.mysql_error());

查询没有通过,因为没有定义 $EID 或类似的东西。有没有办法将 Json_encode 变量作为 PHP 变量?谢谢

【问题讨论】:

  • session_start(); $EID = isset($_POST["name"])?$_POST["name"]:""; $_SESSION['EID'] =$EID; echo "eid = {$EID};";
  • eid是js变量吗?
  • 不.. 这样做,看看你会得到什么。代码将打印 eid='value of eid got from js'

标签: javascript php json encode


【解决方案1】:

您正在使用$_POST 检索您的.ajax() 请求发送的信息,但如先前链接的文档中所示。默认方法是GET,而不是POST。在您的设置中使用type 参数使用 POST(type: 'post')。

至于您的 ajax 不返回结果.. 您对成功函数中的数据变量什么也不做;你所做的就是return true。如果您想查看对数据的处理,请使用它。

我还想在您的 ajax 中说明这一点。您的数据对象中没有包含对象属性 id 的项目,这也将说明它没有在您的 php 中设置;换一种方式说..在您的php中,您使用POST检索ajax请求的值..并检索值'eid'..但没有'eid',只有'name'。将“eid”替换为名称,或在您的请求对象中正确定义“eid”(data: {name: 'john', eid: 'id'}),它将起作用。

这是上面的一个例子,

$.ajax({
    url: 'myPHP.php',
    type: 'post',
    data: {
        name: "John",
        eid: 1 //or whatever eid should be/put your variable here
    },
    success: function(data){
        return true;    
    },
 }); 

【讨论】:

  • 成功函数到底是做什么的?我是 ajax 新手,抱歉
  • @Kay 好吧,你不是说你想提醒变量或类似的东西吗?示例:success: function(data) { console.log(data); },
  • 不是真的,我只是提醒它以确保帖子通过。我真的只是想让变量在我的数据库中进行查询
  • @Kay 好吧,我最终测试了我的答案......它应该适合你。您没有设置 eid,也没有在请求中使用正确的方法。默认值为 GET,但您使用的是 POST.. 因此,它不起作用。我的回答应该能解决你的问题。
  • 我很抱歉这是我的错误。 Post 被定义并且 name 也是 post 方法。还是不行
【解决方案2】:

试试这样的

===你的 Js==

函数 post(){

   $.ajax({
          type: "POST",
           url:"myPHP.php", 
          data: {name: "John"},

          success: function(data){
            alert(data);    
          }
     });
}

post();

====你的 myPHP.php====

 <?php

   error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);// you may want to catch session errors on some server
session_start();
//connect to database
$server = "localhost";
$username = "root";
$password = "secret";
$database = "mydbName";

$connId = mysql_connect($server,$username,$password) or die("Cannot connect to server");
$selectDb = mysql_select_db($database,$connId) or die("Cannot connect to database");

if(isset($_REQUEST['name'])){
$_SESSION['EID']=$_REQUEST['name'];
$EID=$_SESSION['EID'];
if(mysql_query("SELECT * FROM database WHERE ID = '$EID' "))
{
echo "Success!";
}
else
{
echo "Error!";
}
}//Closed isset here

    ?>

【讨论】:

  • 我基本上复制了你所有的东西,没有回声也没有警报。
  • 我不明白你是如何使用你的 post();是单击按钮时还是在其他js函数中
  • $_POST["name"] 这将是你的 $EID = $_SESSION['EID'];你的数据库中有这些数据吗
  • 尝试删除","成功后:function(data){}
  • @ShapCyber​​ 当我点击链接时,post 函数被调用,是的,post 变量存储在会话中
【解决方案3】:

不清楚为什么要设置会话变量,除非您打算在第二个 PHP 脚本中使用它来进行另一个单独的 AJAX 调用。不需要会话变量来将变量传递给第一个 PHP 脚本包含或需要的第二个 PHP 脚本。

请注意,在同一 PHP 代码中调用 session_start() 两次会引发错误。如果您的第一段 PHP 代码包含第二段,这将引发 ~E_NOTICE。另一方面,如果您的第一段代码使用 PHP CLI 执行第二段代码,则第二个脚本不会共享会话数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 2017-10-26
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多