尝试从ajax获取json数组,但是当我试图在文本文件中写下它时,它什么也没显示。
var img = JSON.parse(localStorage.getItem("iPath"));
var img = JSON.stringify(img);
console.log(img);
$.ajax({
url: './php/temporary.php?deletefile',
cache: false,
type: 'POST',
data: img,
success: function( respond, textStatus, jqXHR ){
if( typeof respond.error === 'undefined' ){
//window.location.assign("/buyplace.html");
}
else{
console.log('ОШИБКИ ОТВЕТА сервера: ' + respond.error );
}
},
error: function( jqXHR, textStatus, errorThrown ){
console.log('ОШИБКИ AJAX запроса: ' + textStatus );
}
});
if( isset( $_GET['deletefile'] ) ){
$params = json_decode( $_POST);
$myfile = fopen("testfile.txt", "w");
fwrite($myfile, $params);
//$img = "uploads/" . $imgPath;
//move_uploaded_file($imgPath, "./uploads/");
//unlink('./uploads/' . $img);
}
?>
我该如何解决这个问题?
答案 0 :(得分:1)
$_POST
将包含键值对,您发送的内容是字符串。
所以你应该阅读标准输入,或者你需要确保你实际上是在发送键值对。
第一个案例已经发布为@Scuzzy的评论。
对于后者,使用$_POST
中的标准键值对:
$.ajax({
url: './php/temporary.php?deletefile',
cache: false,
type: 'POST',
data: {json: img},
// the rest of your js
在php中:
if( isset( $_GET['deletefile'] ) ){
$params = json_decode($_POST['json']);
// the rest of your php
答案 1 :(得分:0)
无需将参数作为JSON发送。您可以将对象用作data:
选项,并且每个属性都将作为相应的$_POST
元素发送。
var img = JSON.parse(localStorage.getItem("iPath"));
console.log(img);
$.ajax({
url: './php/temporary.php?deletefile',
cache: false,
type: 'POST',
data: img,
success: function( respond, textStatus, jqXHR ){
if( typeof respond.error === 'undefined' ){
//window.location.assign("/buyplace.html");
}
else{
console.log('ОШИБКИ ОТВЕТА сервера: ' + respond.error );
}
},
error: function( jqXHR, textStatus, errorThrown ){
console.log('ОШИБКИ AJAX запроса: ' + textStatus );
}
});
在PHP中,您需要使用json_encode()
将$_POST
数组转换为可写入文件的字符串。
if( isset( $_GET['deletefile'] ) ){
$params = $_POST;
$myfile = fopen("testfile.txt", "w");
fwrite($myfile, json_encode($params));
}