将javascript变量数据传递到同一php文件中的php变量
我有一个javascript,需要将数据传递给php变量。我已经在寻找如何实现这一点,但我不能使它正常工作。以下是我所做的: Javascript:将javascript变量数据传递到同一php文件中的php变量,php,ajax,Php,Ajax,我有一个javascript,需要将数据传递给php变量。我已经在寻找如何实现这一点,但我不能使它正常工作。以下是我所做的: Javascript: $(document).ready(function() { $(".filter").click(function() { var val = $(this).attr('data-rel'); //check value alert($(this).att
$(document).ready(function() {
$(".filter").click(function() {
var val = $(this).attr('data-rel');
//check value
alert($(this).attr('data-rel'));
$.ajax({
type: "POST",
url: 'signage.php',
data: "subDir=" + val,
success: function(data)
{
alert("success!");
}
});
});
});
然后在我的php标签上:
<?php
if(isset($_GET['subDir']))
{
$subDir = $_GET['subDir'];
echo($subDir);
}
else
{
echo('fail');
}?>
我总是收到失败的文本,所以一定是出了什么问题。我刚开始学习php和jquery,我不知道怎么了。我需要你的帮助。顺便说一句,它们位于同一个文件signage.php上。提前感谢 您使用
POST
方法发送数据,而GET使用GET
<?php
if(isset($_POST['subDir']))
{
$subDir = $_POST['subDir'];
echo($subDir);
}
else
{
echo('fail');
}?>
您正在使用
POST
方法发送数据,而GET正在使用GET
<?php
if(isset($_POST['subDir']))
{
$subDir = $_POST['subDir'];
echo($subDir);
}
else
{
echo('fail');
}?>
您已经在ajax中使用了方法
POST
,所以您也必须在php中更改为POST
<?php
if(isset($_POST['subDir']))
{
$subDir = $_POST['subDir'];
echo($subDir);
}
else
{
echo('fail');
}?>
您已经在ajax中使用了方法
POST
,所以您也必须在php中更改为POST
<?php
if(isset($_POST['subDir']))
{
$subDir = $_POST['subDir'];
echo($subDir);
}
else
{
echo('fail');
}?>
当你使用
$\u GET
你必须在你的url中设置你的数据值,我的意思是
$.ajax({
type: "POST",
url: 'signage.php?subDir=' + val,
data: "subDir=" + val,
success: function(data)
{
alert("success!");
}
});
或者将您的服务器端代码从
$\u GET
更改为$\u POST
当您使用$\u GET
时,我的意思是,您必须在url中设置数据值
$.ajax({
type: "POST",
url: 'signage.php?subDir=' + val,
data: "subDir=" + val,
success: function(data)
{
alert("success!");
}
});
或者将服务器端代码从
$\u GET
更改为$\u POST
编辑javascript代码更改POST以获得ajax类型
$(document).ready(function() {
$(".filter").click(function() {
var val = $(this).attr('data-rel');
//check value
alert($(this).attr('data-rel'));
$.ajax({
type: "GET",
url: 'signage.php',
data: "subDir=" + val,
success: function(data)
{
alert("success!");
}
});
});
});
编辑javascript代码更改帖子以获得ajax类型
$(document).ready(function() {
$(".filter").click(function() {
var val = $(this).attr('data-rel');
//check value
alert($(this).attr('data-rel'));
$.ajax({
type: "GET",
url: 'signage.php',
data: "subDir=" + val,
success: function(data)
{
alert("success!");
}
});
});
});
当你以这种方式回复POST呼叫时,你需要三件事-从
\u POST
读取数据,将其正确地放在那里,然后用JSON回复
$.ajax({
type: "POST",
url: 'signage.php',
data: {
subDir: val,
}
success: function(answer)
{
alert("server said: " + answer.data);
}
});
或者:
$.post(
'signage.php',
{
subDir: val
},
function(answer){
alert("server said: " + answer.data);
}
}
然后在答复中:
<?php
if (array_key_exists('subDir', $_POST)) {
$subDir = $_POST['subDir'];
$answer = array(
'data' => "You said, '{$subDir}'",
);
header("Content-Type: application/json;charset=utf-8");
print json_encode($answer);
exit();
}
更可靠的检查方法是使用辅助功能验证请求的XHR状态,例如:
/**
* isXHR. Answers the question, "Was I called through AJAX?".
* @return boolean
*/
function isXHR() {
$key = 'HTTP_X_REQUESTED_WITH';
return array_key_exists($key, $_SERVER)
&& ('xmlhttprequest'
== strtolower($_SERVER[$key])
)
;
}
现在你应该:
if (isXHR()) {
// Now you can use both $.post() or $.get()
exit();
}
实际上,您可以将AJAX代码卸载到另一个文件中:
if (isXHR()) {
include('signage-ajax.php');
exit();
}
当你以这种方式回复POST呼叫时,你需要三件事-从
\u POST
读取数据,将其正确地放在那里,然后用JSON回复
$.ajax({
type: "POST",
url: 'signage.php',
data: {
subDir: val,
}
success: function(answer)
{
alert("server said: " + answer.data);
}
});
或者:
$.post(
'signage.php',
{
subDir: val
},
function(answer){
alert("server said: " + answer.data);
}
}
然后在答复中:
<?php
if (array_key_exists('subDir', $_POST)) {
$subDir = $_POST['subDir'];
$answer = array(
'data' => "You said, '{$subDir}'",
);
header("Content-Type: application/json;charset=utf-8");
print json_encode($answer);
exit();
}
更可靠的检查方法是使用辅助功能验证请求的XHR状态,例如:
/**
* isXHR. Answers the question, "Was I called through AJAX?".
* @return boolean
*/
function isXHR() {
$key = 'HTTP_X_REQUESTED_WITH';
return array_key_exists($key, $_SERVER)
&& ('xmlhttprequest'
== strtolower($_SERVER[$key])
)
;
}
现在你应该:
if (isXHR()) {
// Now you can use both $.post() or $.get()
exit();
}
实际上,您可以将AJAX代码卸载到另一个文件中:
if (isXHR()) {
include('signage-ajax.php');
exit();
}
我试图将ajax调用中的值传递给php变量。$\u POST是正确答案还是$\u GET?请阅读下面的答案啊,我知道了,我将我的更改为$\u POST,但我仍然有失败文本。当点击事件被触发时,我得到了正确的数据,它提醒成功!但是在我的php标签上,它说失败我不明白。检查
var val
的值并尝试使用数据:{subDir:val},
在检查php标签上的if(isset($\u POST['subDir'])时,它没有设置。这就是错误。因此,它回显失败文本。我试图将ajax调用中的值传递给php变量。$\u POST是正确答案还是$\u GET?请阅读下面的答案啊,我知道了,我将我的更改为$\u POST,但我仍然有失败文本。当点击事件被触发时,我得到了正确的数据,它提醒成功!但是在我的php标签上,它说失败我不明白。检查var val
的值并尝试使用数据:{subDir:val},
在检查php标签上的if(isset($\u POST['subDir'])时,它没有设置。这就是错误。好的,谢谢你的回答,我先试试你的建议。好的,谢谢你的回答,我先试试你的建议。