2016-01-01 4 views
2

В моем угловом приложении я пытаюсь отправить данные в php-скрипт, а затем вернуть обратный вызов.

Вот угловой код:

var data = { value: 'somestring' }; 

$http.post("post_backend.php", data).success(function(data, status) { 
    alert(data + status); 
}).error(function(data, status) { 
    alert(data + status); 
}); 

В моем PHP кода у меня есть простой обратный вызов функции:

if (isset($_POST['value'])) { 
    header('Content-Type: application/json'); 
    echo json_encode('successful callback'); 
    exit(); 
} 

Но когда он выполняет, я получаю статус успеха в предупреждающего сообщения и ничего больше. Я не получаю данные («успешный обратный вызов») и не могу понять около двух часов, в чем проблема?

+0

Похоже, что 'if (isset ($ _ POST ['value']))' условие никогда не выполняется. Что делать, если вы «эхо ($ _ POST)»? Что получает PHP? –

+0

@JeremyThille Вы правы, условие не выполнено. Но в чем проблема? Как я могу это исправить? – MyOwnFan

+0

Не используйте 'alert()' вместо этого используйте 'console.log()' и откройте свои инструменты разработчика в браузере, это должно предотвратить неправильные данные отладки. Также не используйте оператор '+', вместо этого используйте запятую для разделения аргументов следующим образом: 'console.log (data, status)'. Убедитесь, что на консоли нет ошибок и проверьте вкладку сети, чтобы убедиться, что запрос правильно запущен. –

ответ

0

Попробуйте ответить на правильный JSON, например echo json_encode (['status' => 'success callback']);

+2

Это не ответ на проблему, просто предложение. Должен быть помещен как комментарий. –

+1

Вы добавили $ httpProvider.defaults.headers.post ['Content-Type'] = 'application/x-www-form-urlencoded; charset = utf-8'; к вашей заявке? PHP не работает правильно с «Content-Type: application/json» – Viktor

+0

@Viktor Как я могу это сделать? – MyOwnFan

1

Этот код работает для меня.

$params = json_decode(trim(file_get_contents('php://input')), true); 
if (isset($params['value'])) { 
    header('Content-Type: application/json'); 
    echo json_encode(['status'=>'successful callback']); 
    exit(); 
} 
+1

Должен быть способ проще и безопаснее, чем получить содержимое файла. Это небезопасно, и необходимо указать, какой файл получить для ввода. PHP должен работать как услуга ... – MyOwnFan

1

Я нашел ответ. Мне пришлось перенастроить способ отправки данных в php-скрипт. Я нашел эту полезную статью: How can I post data as form data instead of a request payload?

Мне пришлось реализовать jquery и добавить заголовок в мой запрос. В php-скрипте мне не нужно ничего, кроме инструкции if и echo.

+0

Это нормально ответить на ваш собственный quesiton. На самом деле, это поощряется, поскольку в будущем это поможет другим подобным вопросам. – Mawg

Смежные вопросы