Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
angularjs将数据成功发送到php后出现ajax结果解析错误_Php_Jquery_Ajax_Json_Angularjs - Fatal编程技术网

angularjs将数据成功发送到php后出现ajax结果解析错误

angularjs将数据成功发送到php后出现ajax结果解析错误,php,jquery,ajax,json,angularjs,Php,Jquery,Ajax,Json,Angularjs,我有一个angular应用程序使用jquery for the ajax(我使用jquery for the$http在这个问题上取得了一些进展)。我正在尝试将json数据发送到php并成功完成(php读取它并通过标头返回数据)。这里我的问题是$。ajax无法识别成功,它失败并返回响应的解析错误 以下是我的javascript: function loginUser() { var target = "../data/user.php"; var data

我有一个angular应用程序使用jquery for the ajax(我使用jquery for the$http在这个问题上取得了一些进展)。我正在尝试将json数据发送到php并成功完成(php读取它并通过标头返回数据)。这里我的问题是$。ajax无法识别成功,它失败并返回响应的解析错误

以下是我的javascript:

    function loginUser() {
        var target = "../data/user.php";
        var data = {
            "userName": "me",
            "userPass": "pass",
            "action": "login"
        };


        $.ajax({
            url: target,
            type: "POST",
            data: JSON.stringify(data),
            contentType: 'application/json; charset=utf-8',
            dataType: "json",
            success: function(data) {
                console.log(data);
            }
        }).fail(function(jqXHR, textStatus) {
            alert( "Request failed: " + textStatus );
        });
    }
以下是我的php:

$data = file_get_contents("php://input");
$objData = json_decode($data);
print_r($objData);
以下是我在php的标题中得到的响应:

stdClass Object
(
    [userName] => me
    [userPass] => pass
    [action] => login
)
非常感谢你的帮助

function loginUser($scope,$http,$log) {
    var target = "../data/user.php";
    var data = {
        "userName": "me",
        "userPass": "pass",
        "action": "login"
    };

    $http.post(target,$.param(data),{headers:{'Content-Type':'application/x-www-form-urlencoded'}}).then(function(response){
        // success stuff here
    },function(response){
        // failed stuff here
        $log.log(response);
    });

}
然后在PHP文件中,您可以使用$\u POST变量引用您的数据

$user = array(
    'username' => $_POST['userName'],
    'password' => $_POST['password'],
    'action' => $_POST['action']
);
echo json_encode($user);


该响应不是有效的JSON,因此会出现解析错误。如果客户端需要JSON,而您向它发送了一个PHP变量转储,那么它将不知道如何解析它


坦白地说,我不明白你的代码应该做什么。看起来您正在尝试镜像请求中发送的数据。

尝试使用$apply()在角度范围上应用jQuery ajax结果。

为什么要使用
$。ajax
使用Angular的
$http
如果设置了正确的头,则不需要使用
php://input
。如果将标题设置为
Content-Type:application/x-www.form-urlencoded
,则只需在另一端使用常规php变量($\u-GET,$\u-POST,$\u-REQUEST)。如果您要发送JS对象,只需在发送->
$.param(data)
时使用jQuery的param函数即可。目前,我正在尝试实现双向的成功通信。一步一个步骤。@user2174484请记住,如果客户端需要JSON,您需要发回JSON。您可以执行类似于echo json_encode(数组('test'))的操作测试响应。非常感谢您的响应,我终于从angular获得了成功的响应。现在唯一剩下的事情是,我无法找到angular想要解析json的方法。我尝试了fromJson(),但无法将其分解为单独的值(例如,response[0]。username(抛出未定义的错误)、response.username(未定义的无错误))尝试将响应输出到控制台,以便查看可用的对象。您应该能够像任何其他JS对象一样使用点符号引用对象。如果看不到要查找的内容,请尝试将response.data输出到控制台。
echo json_encode($_POST);