PHP无法获取AJAX JSON数据

时间:2017-02-13 19:34:39

标签: javascript php jquery json ajax

尝试从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);
    }
    ?>

我该如何解决这个问题?

2 个答案:

答案 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));
}