我希望你能指出我正确的方向。
我有一个php页面,其中包含一些HTML标记和一些JS / jQuery例程,用于根据“用户输入”(checkboxes..etc)构建一个“用户选择”数组。
我的问题是,如何将这个(多维)数组传递给PHP,即在同一页面? (最终我想将这个数据/数组保存到我的PHP会话中)
环顾四周时,我读到了使用另一个(外部).php脚本来做的事情,这不是我以后的事情,我希望这样做到我所在的同一页......没有一个清醒
$ .post()会为我做这个吗?没有页面刷新(如果我们压制事件或其他)... 和-not-使用外部.php脚本?
我理解PHP运行/执行FIRST ...然后其他一切..
我并没有真正试图让PHP对从JS / AJAX发送的数据做任何事情..将它保存到SESSION数组之外..
Ajax似乎需要它?
总结:
我已经阅读了一些关于使用AJAX发布到同一页面的URL var left left empty / blank?
编辑:
显示数据,我想传递...下面是一段代码。
它是一个对象数组..其中每个对象的1个属性是另一个数组
示例:
var somePicks = [];
somePicks.push({casename:caseName, fullname:fullName, trialdate:trialDate, citystate:cityState, plaintiff:plaintiff, itemsordered:itemsOrdered=[{name:itemOrdered, price:itemPrice}]});
来自所有复选框..我更新'子阵列'(push或splice..etc)
somePicks[i].itemsordered.push({name:itemOrdered, price:itemPrice});
'this'是我希望从JS使用我最有可能的AJAX进入我的PHP会话的数组/数据。
答案 0 :(得分:0)
我建议使用Jquery的.post方法,调用PHP文件,在PHP中发送数组并进行处理。
可以在这里找到关于.post()的jquery文档:http://api.jquery.com/jquery.post/
编辑:
我前段时间使用过这个案例:
document.getElementById("promotion_heart_big").onclick = function(e){
$.post("' . URL_SITE . 'admin/querys/front.make_love.php",
{
id_element: ' . $business["promotion"]["id"] . ',
type: \'promotion\',
value: $("#field_heart").val()
},
function(data) {
if (data.result) {
//some long code....
}
}
},
"json"
);
答案 1 :(得分:0)
你可以这样做,但实质上它与使用外部PHP文件没有任何不同。 PHP代码在发送到浏览器之前在服务器上执行。如果不重新连接服务器,您将无法更新PHP SESSION阵列。
如果你真的想使用post来调用当前页面(我认为你不能把这个url留空,但你可以提供当前的文件名),你可以在顶部使用PHP处理程序代码的页面。但是,这与将处理程序代码放在外部文件中并调用它完全相同。
无论哪种方式,页面都不会刷新,并且看起来与用户完全相同。
答案 2 :(得分:0)
您可以将$ .ajax函数与$(#formid).serializearray()一起使用。并在$ .ajax函数中使用url作为ur表单操作。
我希望它对你有用
<form id="formId" action="post.php" methor="post">
<input type="checkbox" name="test1" value="testvalue1">TestValue1
<input type="checkbox" name="test2" value="testvalue2">TestValue2
<input type="button" id="buttonSubmit" value="click here" />
</form>
<script>
$("document").ready(function ()
{
$("#buttonSubmit").click(function () }
{
var serializedata=$("#formId").serializeArray();
$.ajax(
{
type:"post",
url:$("#formId").attr("action"),
data:{"data":serializedata},
success:function()
{
alert("yes");
}
});
});
});
</script>
<?php
if(isset($_POST))
{
session_start();
$_SESSION["data"]=$_POST["data"];
}
?>
答案 3 :(得分:0)
来自一些初步测试..
这似乎没有用,(明天会做更多测试)
$.ajax({
type : 'POST',
//url : 'sessionSetter.php',
data: {
userPicks : userPicks,
},
success : function(data){
//console.log(data);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
});
有人提到发布到外部.php脚本 - 或者 - 发布相同的页面会产生相同的结果..
有没有人有这样的例子?