我有这段代码
$(document).on('click', '#button', function(){
var my_data = 'Test Test Tes';
$.ajax({
type: "POST",
url: "preview.php",
data: "my_data=" + my_data,
success: function() {
window.open('preview.php');
},
});
});
以上代码打开preview.php
,但我收到此错误 -
注意:未定义的索引:my_data in 第3行的C:\ xampp \ htdocs \ tb-builder \ preview.php
这就是我preview.php
-
<?php
$data= $_POST['my_data'];
echo $data;
?>
有人可以帮我解决这个问题吗?感谢
答案 0 :(得分:2)
主要错误是
的价值window.open('preview.php');
加载页面preview.php
,
使用时加载post/get
请求时,您不会发送任何数据window.open('preview.php');
,您期待$_POST['my_data']
$(document).on('click', '#button', function(){
var my_data = 'Test Test Tes';
$.ajax({
type: "POST",
url: "preview.php",
data: "my_data=" + my_data,
});
});
<强> preview.php 强>
<?php
if(isset($_POST['my_data']){
$data= $_POST['my_data'];
header('location:preview.php?my_data=$data'); //reload preview.php with the `my_data`
}
if(isset($_GET['my_data'])){
$data=$_GET['my_data'];
echo $data; //display `my_data` as you requested
}
?>
不使用ajax,实现你所需要的。
$(document).on('click', '#button', function(){
var my_data = 'Test Test Tes';
window.open('preview.php?my_data='+my_data);
});
<强> preview.php 强>
<?php
if(isset($_GET['my_data'])){
$data=$_GET['my_data'];
echo $data;
}
?>
<小时/>
实际上你根本不需要
ajax
,因为你要去另一个包含数据的页面。
以避免get
请求
将
button
包含在隐藏form
值input
的{{1}}内my_data
并设置action="preview.php"
,如下所示
<form action="preview.php" method="post">
<input type="hidden" id="my_data" value="Test Test Tes">
<button type="submit" id="button">post</button>
</form>
答案 1 :(得分:0)
window.open
只需创建一个新的window
对象。那个窗口没有$_POST
个全局变量。使用window.open('preview.php?my_data=' + my_data);
并在PHP中使用$_GET['my_data']
。
该帖子与ajax有关,不适用于新窗口。
修改强>
好的伙计们,我看到这里有点混乱。
以上代码打开 preview.php,但我收到此错误 -
那会发生什么?
OP正在向my_data
发送名为preview.php
的数据。此数据通过$_POST
传递到preview.php
。此时,有$_POST['my_data'];
成功完成后,ajax调用,然后window.open
打开新窗口,没有$_POST
数据,这就是OP收到此错误消息的原因
如果他想使用他在my_data
中发布的相同数据,那么他需要将其添加到网址并使用$_GET
。
我认为被误解的是@HoangHieu所写的内容,我指出:
是肯定的。在新窗口 - Xahed Kamal
如果您想使用响应,请使用
success: function(reponse) {
window.open('preview.php?my_data=' + response);
},
然后在新窗口中使用$_GET['my_data']
。
答案 2 :(得分:0)
使用
if (isset($_POST['my_data']))
{
$data= $_POST['my_data'];
echo $data;
}
答案 3 :(得分:0)
请使用以下内容更改您的preview.php代码: -
<?php
if (isset($_POST['my_data']))
{
$data= $_POST['my_data'];
echo $data;
}
?>
它可能对你有帮助。
答案 4 :(得分:0)
中已完成的问题
你的错误在新窗口? - HoangHieu 1分钟前
是。在新窗口中 - Xahed Kamal
第一个Ajax发布它完成成功:函数调用...在新窗口中你没有任何发布数据,我不知道任何解决方案通过javascript将数据发布到新窗口。 。只能通过 GET 请求发送数据..
答案 5 :(得分:-1)
你的构造:
data: "my_data=" + my_data,
错了。它应该是:
data: {my_data: $my_data},
我将你的JS变量变换为$my_data
,所以它不那么令人困惑。