0

我正在尝试使用 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 变量?谢谢

4

3 回答 3

0

尝试这样的事情

===你的 Js ==

函数帖子(){

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

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

邮政();

====你的 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

    ?>
于 2013-11-01T06:30:58.210 回答
0

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

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

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

这是上面的一个例子,

$.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;    
    },
 }); 
于 2013-11-01T06:07:47.060 回答
0

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

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

于 2013-11-01T07:47:24.560 回答