我有一个数组,它是用javascript代码填充的。当点击确认按钮时,我需要在php端达到这个数组的值。所以,我使用的ajax post方法如下。它运行成功,我知道,因为所有的警报都工作成功。这是我代码的js部分。
$('#firstConfirmButton').click(function(){
var my_json_val = JSON.stringify(ordersArray, null);
alert(my_json_val.toString());
$.ajax({
type: "POST",
url: "test.php",
data: my_json_val,
cache: false,
contentType: false,
async: false,
processData: false,
success: function(response){
//alert("---"+data);
alert("Settings has been updated successfully.");
alert(my_json_val);
alert(response);
window.location.reload(true);
}
});
});
另一方面,我有一个test.php页面,它还包含使用上面js代码的"确认"按钮。当点击这个按钮时,我想要回显我用ajax发布的数组的值。但是我无法获得php端的值。这是我的php代码;
<?php
require("includes/db.php");
require("includes/functions.php");
session_start();
if (isset($_POST['firstConfirmButton'])) {
echo 'I am here'; //I can see only this row on php page
$my_json_encoded = $_POST['data'];
$my_json_val = json_decode($my_json_encoded);
echo $my_json_val; //nothing happens
}
这是我的确认按钮的html代码;
<form role="form" method="post" action="starbucks.php">
<div id="firstConfirmButton">
<button type="submit" name="firstConfirmButton" id="firstConfirmButton" class="btn btn-primary btn-lg">Onayla</button>
</div>
那么,哪里是我的错,请帮帮我!
不要将数组强制转换为Json,ajax post会自己强制转换,所以用ordersArray
替换my_json_val
。
您真的想重定向到php文件还是只需要其中的数据?因为action="file.php"重定向到此文件。如果你只需要数据,试着使用jquerys.submit方法并进行ajax调用,否则用它来重新映射你的动作属性(为了简单起见,如果你的网站上有多个表单,我会在表单上使用id):
$('#yourform').submit(function(){
var my_json_val = JSON.stringify(ordersArray, null);
var elem = {
firstConfirmButton: true,
data: my_json_val
}
$.ajax({
type: "POST",
url: "test.php",
data: elem,
cache: false,
contentType: false,
async: false,
processData: false,
success: function(response){
//alert("---"+data);
alert("Settings has been updated successfully.");
alert(my_json_val);
alert(response);
}
});
return false;
});
如果你真的想重定向,试着使用这个:
$('#yourform').submit(function(ev){
var my_json_val = JSON.stringify(ordersArray, null);
$(this).attr('action', ev.target.action+'?data="'+my_json_val+'"');
});