昨天I asked about connecting HTML, Javascript and PHP with sessions。
我被建议使用$ .ajax(),但我无法弄清楚如何让它工作。
首先,我有一个HTML文件:
<?php session_start(); ?> <!-- This is on the first line of the page -->
...
<form id="formexample" method="post" action="cart.php">
<select name="formexample1">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select name="formexample2">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<button type="button" onclick="addToCart()">Add to Cart</button>
</form>
<div class="test"></div>
我在一个单独的,包含的PHP文件中有这个:cart.php
<?php
session_start();
$PHPtest = 1;
echo json_encode($PHPtest);
/*
$_SESSION['cart'][$_POST['formexample1']] = $_POST['formexample1'];
$_SESSION['cart'][$_POST['formexample1']][$_POST['formexample2']] = [$_POST['formexample2']]
*/
?>
我的目标是在我的Javascript中访问$ _SESSION变量,但目前我正试图让它首先使用$ PHPtest。
在Javascript中我有这个:
function addToCart()
{
var test;
$.ajax(
{
url:"cart.php",
type:"post",
data: data,
success:function(PHPtest)
{
test = $.parseJSON(PHPtest);
console.log(test); //sends the response to your console
},
error:function()
{
console.log("Error");
}
});
alert(test);
}
要了解我如何达到这一点,请参阅昨天的帖子(链接在页面顶部)和Josh S的答案下的讨论。我试图让$ .ajax()工作,但没有成功。 我一直在寻找在线示例,并一直在尝试编写相同的格式,但我尝试的任何内容似乎都无法正常工作。
提前致谢。
修改
这就是我现在所拥有的:
var test;
$.ajax(
{
url:"cart.php",
type:'post',
data: 'test',
datatype: 'json'
success:function(PHPtest)
{
test = $.parseJSON(PHPtest);
alert(test);
console.log(test); //sends the response to your console
},
error:function()
{
console.log("Error");
}
});
编辑2
我终于想出了如何将$ PHPtest发送到Javascript。我写道:
$.get( "cart.php", function( PHPtest ) {
test = PHPtest;
alert(test);
});
我的PHP仍然存在:
<?php
/* session_start();*/
$PHPtest= "test";
echo json_encode($PHPtest);
?>
它适用于PHPtest的各种值。据我所知,在“echo”和“$ PHPtest”之间取出“json_encode”没有任何区别。
编辑3
这就是我现在所拥有的。
HTML: 这是一个文件“bookings.php”。 ... 选项1 选项2 选项1 选项2 添加到购物车
使用Javascript:
function addToCart()
{
var test;
get( "cart.php", function(PHPtest)
{
test = PHPtest;
alert(test);
});
}
PHP: 外部PHP文件,“cart.php”:
<?php
/* session_start();*/
$PHPtest= "Example";
echo json_encode($PHPtest);
if(isset($_POST))
{
$_SESSION['cart']['0'] = $_POST['formexample1'];
}
?>
警告显示:
“示例”
通知:未定义的索引:(目录)中的formexample1 8
即使我注释掉“$ .get()”,页面左上方也会显示相同的文字。
编辑4
我正在尝试使用AJAX提取单个PHP变量$ PHPtest。我也正在尝试正确检索POST信息。
HTML:
<?php session_start(); ?> <!-- This is on the first line of the page -->
...
<form id="bookingform" method="post" action="cart.php">
<select name="day">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<select name="time">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
<button type="button" onclick="addToCart()">Add to Cart</button>
</form>
使用Javascript:
function addToCart()
{
$("#bookingform").submit();
var test;
$.get( "cart.php", function(PHPtest) {
test = PHPtest;
alert(test);
});
}
cart.php:
session_start();
$PHPtest = "Test";
$PHPtest = "Test2";
echo json_encode($PHPtest);
echo json_encode($PHPtest2);
if(isset($_POST['day']))
{
/*$PHPtest3 = "test3"
$_SESSION['cart']['0'] = $_POST['day'];
echo json_encode($PHPtest3);
echo json_encode($_POST['day']);*/
}
实际上,警报产生
> "Test""Test2"
取消注释cart.php中的“isset”会将警报更改为:
<br />
<b>Parse error</b>: syntax error, unexpected '$_SESSION' (T_VARIABLE) in <b>(directory)</b> on line <b>14</b><br />
第14行是“$ _SESSION ['cart'] ['0'] = $ _POST ['day'];”。
答案 0 :(得分:0)
如此多的编辑很难说明你的立场。所以让我们倒退一步来解决这个问题。
编辑3
您收到此错误是因为您实际上没有发布任何内容。始终会设置$_POST
。因此,检查它会给你一个误报。相反,你会想做这样的事情:
<?php
session_start();
if (isset($_POST['formexample1'])) {
$_SESSION['cart']['0'] = $_POST['formexample1'];
}
编辑2:
首先你是对的。您实际上是想将数据发布到后端。至少从cart.php开始就是这样。如果您想跳过整个$.ajax()
来电,那么您可以查看jQuery post。
修改1:
...
url:"cart.php",
type:"post",
data: data,
...
我看不到你的数据对象在哪里发挥作用。 Javascript将让你抛出未定义的变量。 jQuery会默默地为你处理它们。这可能会对您有所帮助。
...
url:"cart.php",
type:"post",
data: {
"formexample1" : $('select[name="formexample1"]').val(),
"formexample2" : $('select[name="formexample2"]').val()
}
...
这应该可以帮助您找回您正在寻找的结果。如果没有,请告诉我。