>我正在尝试使用 ajax 帖子将 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 变量获取?谢谢
您正在使用$_POST
来检索.ajax()
请求发送的信息,但如之前链接的文档所示。 默认方法是 GET,而不是 POST。 使用设置中的 type
参数使用 POST( type: 'post'
)。
至于你的ajax不返回结果......你对成功函数中的数据变量什么都不做;你所做的只是return true
。 如果您想查看对数据完成的操作,请使用它。
我还想在你的阿贾克斯中说明这一点。您的数据对象中没有包含对象属性 id 的项目,这也解释了它未在 php 中设置;换一种说法..在你的php中,你通过使用POST来停用ajax请求的值。然后检索值"eid"。但没有"开斋节",只有"名字"。 将"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;
},
});
试试这样的事情
===你的js==
函数 post(){
$.ajax({
type: "POST",
url:"myPHP.php",
data: {name: "John"},
success: function(data){
alert(data);
}
});
}
帖子();
====你的我的PHP.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
?>
目前还不清楚为什么要设置会话变量,除非您打算将其用于另一个单独的 AJAX 调用的第二个 PHP 脚本。会话变量不需要将变量传递给第一个包含或需要的第二个 PHP 脚本。
请注意,在同一个 PHP 代码中调用 session_start() 两次会抛出错误。如果你的第一段 PHP 代码包含第二段,这将抛出一个 ~E_NOTICE。另一方面,如果您的第一段代码使用 PHP CLI 来执行第二段代码,则第二个脚本不会共享会话数据。