У меня эта головная боль сейчас, так как у меня была эта проблема целый день и, тем не менее, ее не исправить. Я смотрел на Google и StackOverflow в течение нескольких часов, пробовал много методов (включая переход с JSON на JSONP, проверку заголовков на PHP, тесты localhost), спросил друзей и т. Д., И я все еще застрял. Может быть, это всего лишь деталь, я не знаю.JQuery JSON призывает к PHP WebService всегда запускает обратный вызов «Ошибка»
Я работаю над мобильным приложением Android, и для этого у меня есть веб-сервис PHP на хостинге (скажем, example.com), который работает нормально, так как я тестировал его с помощью клиента PHP WS JSON. Проблема в том, я звоню этот WS Теперь из файла JS на моем компьютере с помощью JQuery, JSON и Ajax, и я получаю следующий ответ от отладчика консоли Google Chrome:
- readyState: 4
- его статуса: " OK»
- responseText: (что мне нужно, никаких ошибок)
Но ответа от сервера, я всегда получить обратный вызов ошибки, никогда успеха. Я читал это потому, что сервер не смог правильно разобрать JSON, но я действительно не знаю.
Я оставляю вам свой код.
От CLIENT.JS:
$.ajax({
type: "POST",
crossDomain: true,
contentType: "application/json utf-8",
dataType: "json",
url: "http://www.example.com/ws/webservice.php/" + methodName,
data: JSON.stringify(window.parameterArray),
success: function (response)
{
alert('Success!');
window.resultVar = "Success! " + response;
console.log(response);
},
error: function (response)
{
alert('Error');
window.resultVar = "Error: " + response;
console.log(response);
}
});
От SERVER.PHP:
<?php
header('Access-Control-Allow-Origin: *'); //I have also tried the * wildcard and get the same response
header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description');
header('Content-type: application/json; charset=utf-8');
require_once "mobilefuncts.php";
$methodName = str_replace($_SERVER["SCRIPT_NAME"]."/", "", $_SERVER["REQUEST_URI"]);
if (isset($methodName))
{
$param = (array)json_decode($HTTP_RAW_POST_DATA);
$access = new MobileAccess(); //From mobilefuncts.php
$result = call_user_func_array(array($access,$methodName), $param); //Calls the method
echo json_encode($result);
}
?>
ли знает, что можно сделать любой? Возможно, как я уже говорил, проблема - это всего лишь деталь. Я не знаю, действительно, я новичок в таких вещах.
Спасибо в forehand!
UPDATE:
Я просто понял, консоль Chrome говорит мне так:
GET http://localhost:81/.../cordova_plugins.json 404 (Not Found)
Может быть причиной этой проблемы?
UPDATE 2:
Посмотрите здесь, у меня есть ключ. Я добавил несколько параметров в функцию ошибки, и получил себе этот результат:
(Изменение ошибки из функции (отклик) для функции (jqXHR, textStatus, errorThrown))
jqXHR.responseText: [an array with the info I'm asking]
errorThrown: "SyntaxError: Unexpected token"
'contentType:" application/json utf-8 "Отсутствует точка с запятой? –
Что такое ответ? – FazoM
«ответ» говорит, между прочим, что я ставлю на главный пост: readyState: 4 статус: 200 его статуса: «OK» responseText: (что мне нужно, без ошибок) –