2014-11-19 3 views
0

Поэтому мне нужно отправить некоторые данные на страницу php, и она вернет мне другую php-страницу, основанную на моих данных.Как получить страницу PHP, возвращенную с помощью запроса jQuery Ajax

Я отправить данные так:

$(document).ready(function() { 
    $.ajax({ 
     url: '//www.example.com/page.php', 
     type: "post", 
     dataType: 'jsonp', 
     data: { myvar:myvalue }, 
     success: function(response) { console.log("success."); }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { console.log("error."); }, 
     complete: function() { console.log("complete."); } 
    }); 
}); 
  • Это показывает предупреждение о том, jQuery180014405992737595236_1357861668479 was not called(номера копируются из другого вопроса) Я думаю, что причина в том, что он ожидает результат JSon от страницы, когда это не так.
  • В Chrome говорится, что Uncaught SyntaxError: Unexpected token < ссылается на возвращенную страницу php, поэтому я предполагаю, что мой код не ожидает возврата такого типа файла.

Подводя итог, это работает, но , что нужно JQuery предупреждение и ошибка консоли для крепления, и я думаю, что правильный путь будет обработка правильно возвращаемый результат страницы. Надеюсь, вы, ребята, можете помочь мне исправить это, что кажется довольно простой задачей, но Im действительно новичок в этом. Благодаря

Удаление DATATYPE: 'JSONP' или изменить его на 'JSON' получается на мой сценарий не выполняется и получаю следующее сообщение об ошибке:

  • XMLHttpRequest cannot load http://www.example.com/page.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://myserver.com/myPage' is therefore not allowed access.
+0

является PHP скрипт на другом домене, ГДЕ выполняется javascript (в примере, работает ли javascript на странице www.example.com)? – RichardBernards

+0

Попробуйте снять свой параметр 'dataType', сервер отправляет обратно HTML. Возможно, вам придется декодировать JSON из строки, если сервер не отправляет согласованные ответы. –

+0

И dataType 'jsonp' требует, чтобы json возвращался, если это HTML, который вы ожидаете, измените его на' html' – RichardBernards

ответ

0

I think the reason is that it's expecting a json result from the page

Пришло ожидая ответа JSONP. (JSONP не JSON). Вы сказали:

dataType: 'jsonp', 

... который явно заставляет JQuery лечить ответ как JSONP (и, как побочный эффект, GET).

the returned php page, so I assume that my code isnt expecting that kind of file to be returned.

Сервер не должен возвращать страницу PHP. Он должен выполнять код PHP и возвращать все, что выводится. Похоже, что он выводит HTML.

Вам нужно либо:

  • Не сказать сценарий ожидать JSONP. (Обратите внимание, что вы, вероятно, тогда придется настроить CORS на сервере, чтобы иметь дело с теми же проблемами происхождения) или
  • Измените PHP для возврата JSONP
+0

Мой скрипт отправляет данные на другой сервер, на который я не могу контролировать, поэтому все, что я могу изменить, - это код, который я предоставил. Он вернет html, но я не знаю, что не так в моем коде и как получить возвращенную страницу. – Dane411

+0

@ Dane411 - Я сказал вам, что не так с вашим кодом. Вы говорите jQuery, чтобы рассматривать ответ как JSONP. Ответ не JSONP. Если сервер не предоставит вам разрешение указывать браузеру ваших посетителей для извлечения ваших данных из него (через CORS), вы не можете получить к нему доступ напрямую с помощью Ajax. – Quentin

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