1

これは私の http get コードです。ここでは、console.log(data) が、エコーされたステートメントではなく、php コード全体を出力しています。何が起こっているのか理解できない私を助けてください。私はイオン角度アプリを作っています。

Angular コード

// define angular module/app
var formApp = angular.module('formApp', [])
// create angular controller and pass in $scope and $http
.controller('formController', function ($scope, $http) {
    // create a blank object to hold our form information
    // $scope will allow this to pass between controller and view
    $scope.formData = {};
    // process the form
    $scope.processForm = function() {
        $http({
            method  : 'GET',
            url     : 'process.php',
            data    : $.param($scope.formData),  // pass in data as strings
            headers : { 'Content-Type': 'application/x-www-form-urlencoded' }  // set the headers so angular passing info as form data (not request payload)
        })
            .success(function(data) {
                console.log(data);
                if (!data.success) {
                    // if not successful, bind errors to error variables
                    $scope.errorName = data.errors.name;
                    $scope.errorSuperhero = data.errors.superheroAlias;
                } else {
                    // if successful, bind success message to message
                    $scope.message = data.message;
                }
            });
    };
});

PHPコード

<?php
$errors         = array();      // array to hold validation errors
$data           = array();      // array to pass back data
// validate the variables ======================================================
if (empty($_POST['name']))
    $errors['name'] = 'Name is required.';
if (empty($_POST['superheroAlias']))
    $errors['superheroAlias'] = 'Superhero alias is required.';
// return a response ===========================================================
// response if there are errors
if ( ! empty($errors)) {
    // if there are items in our errors array, return those errors
    $data['success'] = false;
    $data['errors']  = $errors;
} else {
    // if there are no errors, return a message
    $data['success'] = true;
    $data['message'] = 'Success!';
}
// return all our data to an AJAX call
echo json_encode($data);

コンソール出力/Ajax レスポンス

<?php
$errors         = array();      // array to hold validation errors
$data           = array();      // array to pass back data
// validate the variables ======================================================
if (empty($_POST['name']))
    $errors['name'] = 'Name is required.';
if (empty($_POST['superheroAlias']))
    $errors['superheroAlias'] = 'Superhero alias is required.';
// return a response ===========================================================
// response if there are errors
if ( ! empty($errors)) {
    // if there are items in our errors array, return those errors
    $data['success'] = false;
    $data['errors']  = $errors;
} else {
    // if there are no errors, return a message
    $data['success'] = true;
    $data['message'] = 'Success!';
}
// return all our data to an AJAX call
echo json_encode($data);

ご覧のとおり、エコーされたステートメントではなく、php コード全体を送信しています。

4

1 に答える 1

0

このスレッドが古いことは承知していますが、次のようなルールを書き留めている場合は、.htaccess ファイルを確認してください。

PHP5.4 をデフォルトとして使用

AddHandler アプリケーション/x-httpd-php54 .php

それを取り除く。私はこの間違いを犯しました。

于 2015-06-23T23:25:30.433 に答える