[英]Send json from javascript to php
我有一个页面,用户在其中做一些事情,然后选择下一步,我想将他们重定向到一个名为“ Step2.php”的php文件以及一些JSON信息。
我建立了我的json字符串,它看起来像这样:
[{"name":"IMG_20130726_182336.jpg","size":2280709,"type":"image/jpeg","width":null,"height":null,"lastModified":1374852216000,"fileExtension":"jpg","orientation":1,"displayed":true,"attributes":[{"title":"Name: ","value":"IMG_20130726_182336.jpg"},{"title":"Date: ","value":"no date"}]}]
现在,我通过jQuery POST发送了它,如下所示:
jsonData = JSON.stringify(serializableAttributes);
console.log(jsonData);
$.ajax({
type: 'POST',
url: 'Step2.php',
data: {"jsonData" : jsonData},
success: function(msg) {
console.log("Json Sent! " +msg);
window.location("")
},
error: function(request,msg){
console.log("Error : " + msg);
}
});
问题: 为什么我在Step2.php文件中什么都收不到? 我是否将用户错误地重定向到该页面?
Step2.php文件中的代码如下所示:
if(isset($_POST["jsonData"])) {
$json = $_POST["jsonData"];
var_dump(json_decode($json, true));
} else {
echo "NO";
}
它总是显示NO。
你不能这样做。 那不是AJAX和POST的工作方式。
如果您只是要转到Step2.php,请尝试将其作为URL的一部分发送到页面。
只需执行以下操作即可代替您的AJAX函数:
var jsonData = [YOUR DATA];
window.location.href="Step2.php?json="+jsonData
或者,如果PHP创建了JSON字符串,则可以将其存储为SESSION变量。
编辑:要进一步冒险在SESSION可变路线上...
现在拥有您的AJAX脚本,但是创建一个新的PHP文件。 在此示例中,我们将其称为foo.php。 像这样设置foo.php文件:
session_start();
if($_POST){
if(isset($_POST['jsonData'])){
$json = $_POST['jsonData'];
$_SESSION['jsonData'] = $json;
//CREATE A JSON RESPONSE INIDCATING SUCCESS
echo '{ "success" : 1 }';
}
}
您的AJAX调用的SUCCESS函数可以分析成功代码的响应。 如果它是“ 1”,则重定向到Step2.php页面。
只要确保您在每个页面的顶部都调用session_start()即可。
好的,我想您会误解AJAX的工作原理。 您的ajax请求将json发送给您的php,然后应以适当的返回值对其进行响应,在您的情况下为var_dump
。
这根本不会将json保留在php中,如果您在没有POST请求的情况下请求php文件,则不会获得任何其他信息,但输出为“ NO”,因为您没有发送POST数据。
如果您确实想向php发送一个json,请执行您现在正在做的事情,并听取您在检查器中看到的请求响应。 我不清楚您最终想对数据做什么,因此我不知道这是否是正确的方法。
您可以将JSON
发布到PHP
jsonData = JSON.stringify(serializableAttributes);
console.log(jsonData);
$.post("Step2.php", { json: jsonData }, function(msg) {
console.log("image name = " + msg);
});
PHP,您只需解析:
if(isset($_POST['json'])){
$json = $_POST['json'];
$data = json_decode($json);
$image = $data[0];
echo $image->name;
$atributes = $image->attributes;
foreach($atributes as $atrribute){
//echo 'title '.$atribute->title;
}
}
在我的工作中尝试以下代码:
<?php
if(isset($_POST["jsonData"])) {
$json = $_POST["jsonData"];
$json = str_replace('\\', '', $json);
var_dump(json_decode($json, true));
print_r($json);
} else {
echo "NO";
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.