2

angularjs の単純な ajax リクエストをテストしていますが、機能していないようです。リクエストが行われ、200 を取得していますが、データが渡されていません。

$http({
        url: "myphp.php",
        method: "GET",
        dataType: "json",
        data: {"foo":"bar"}
    }).success(function(data, status, headers, config) {
        console.log(data);
    }).error(function(data, status, headers, config) {
        $scope.status = status;
});

<?php

echo var_dump($_GET);

?>

get と post の両方で同じ結果が得られます。たとえば、$_GET['foo'] にアクセスしようとすると、未定義のインデックス例外が発生します。

私は何を間違っていますか?

4

2 に答える 2

2

問題は、データが JSON でエンコードされた本体 ( {dataType: "json", data: {"foo": "bar"}}) で PHP に送信されることです。GET/POST パラメータとしてではありません。

body でデータを渡し、PHP が $_GET で取得しようとすると、undefined index.

PHP での正しい方法はわかりませんが、次のようにする必要があります。

$requestBody = file_get_contents('php://input');
$requestBody = json_decode($requestBody);
于 2013-03-02T14:11:49.157 に答える
0

PHP は JSON を受け入れないため'application/json'、angular からヘッダーとパラメーターを適切に更新する必要があります。

まず、データをパラメータ化します。

data: $.param({ "foo": $scope.fooValue })

次に、以下を$http

 headers: {
     'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8'
 }, 

すべてのリクエストが PHP に送信される場合、次のようにパラメーターを設定でグローバルに設定できます。

myApp.config(function($httpProvider) {
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
});
于 2014-05-22T19:00:48.293 に答える