У меня есть очень простой сегодня! Я пытаюсь опубликовать из jQuery в файл PHP, размещенный на localhost.
Мой JS:
$("#searchNameButton").click(function() {
var name = $("#searchNameText").val();
$.ajax({
type: 'POST',
url: 'localhost:8080/getNameInfo.php', // -> this works fine from the browser
// data: { name: name }, -> commented out
success: function(){
alert('request successful');
},
error: function(xhr, textStatus, errorThrown){
alert('request failed');
}
})
});
Мой PHP-файл (getNameInfo.php), очень простой для тестирования:
<?php
echo 'TEST';
?>
В jQuery это всегда приводит меня к ошибке, говоря «Внутренняя ошибка сервера».
Я использую Ripple Emulator, и это то, что появляется в консоли:
СООБЩЕНИЕ https://rippleapi.herokuapp.com/xhr_proxy?tinyhippos_apikey=ABC&tinyhippos_rurl = локальный% 3A8080 / getNameInfo.php
500 — внутренняя ошибка сервера)
Я предполагаю, что это связано больше с тем, что написано в файлах. Любой совет? Спасибо!
РЕДАКТИРОВАТЬ: Нашел это: ССЫЛКА НА САЙТ но это не решит мою проблему. Если я сделаю то, что здесь написано, я не получу никакой ошибки (вместо этого), но все равно потерплю неудачу.
РЕДАКТИРОВАТЬ 2: Если я установлю для междоменного прокси значение Local в Ripple (это предлагается по ссылке выше), я получу
ОПЦИИ HTTP: // локальный: 4400 / пульсация / xhr_proxy tinyhippos_apikey = ABC&tinyhippos_rurl = HTTP% 3A // локальный% 3A8080 / getNameInfo.php нетто :: ERR_CONNECTION_REFUSED
РЕДАКТИРОВАТЬ 3: Изменил мой URL на локальный
C: //Mobile//Cross-Platform//TestApp//www//php//getNameInfo.php
и сейчас работает. Понятия не имею, как заставить это работать на localhost. BUT пойдет с этим сейчас, так как это только учебное приложение.
Добавьте контроль доступа заголовка вверху getNameInfo.php
файл :
header('Access-Control-Allow-Origin: *');
Итак, наконец-то я нашел решение.
Несмотря на то, что это не рекомендуется, запуск Chrome с
—отключение-веб-безопасность
позволит мне вызвать скрипт PHP, размещенный на локальный: 8080 от локальный: 3000 где находится PhoneGap / Ripple Emulator.