2010-06-05 4 views
2

Я использую этот код для отправки сообщений на страницу PHP:

var qreq = ".....myurl.php"; 
$.post(qreq, function(data){alert(data);}); 

в моем PHP файл у меня есть это:

...... 
$prevtopic = $row["topic_id"]; 
echo $prevtopic; 

предупреждение появляется, но пусто. по какой-то причине данные пустые, хотя я эхо из файла PHP. Я также пробовал просто эхом «привет», но это тоже не сработало. Что я делаю не так?

спасибо.

+3

Является ли файл PHP в том же домене? –

+0

нет, но это не должно иметь значения, не так ли? Я использую полный URL-адрес в запросе. – vee

+0

Угадайте, что мы увидим больше вашего кода, чтобы рассказать вам! прежде всего убедитесь, что вы используете правильный URL-адрес, возможно, вы можете сделать это уверенно, введя его в браузере; чтобы больше узнать о данных, отправленных между вашим браузером и сервером, попробуйте что-то вроде firebug (https://addons.mozilla.org/de/firefox/addon/1843/), который может показать вам в консоли консоль url, какие данные отправляются и т. д. ... –

ответ

2

Вы не можете запросить кросс-домен как это, то, что блокирует вас, называется same-origin policy, чтобы предотвратить вредоносные междоменные запросы (даже если у вас нет злого намерения, он по-прежнему заблокирован).

Для этой ситуации вы можете использовать JSONP, но не получите нормальное содержание html/text, как у вас есть. Here's a short writeup with a better description on JSONP, или here for a full example, но you need to return JSONP from PHP.

Что касается Почему? Это потому, что http://evil.com/ не может отправлять запросы http://mybank.com без каких-либо проверок на месте, поэтому политика существует.

+0

Разрешены междоменные запросы GET :) – Anpher

+0

все в php корректно выполняется через этот .post, и материал вставляется в мою базу данных. как это работает, несмотря на политику? делает ли политика просто предотвращение передачи данных с php на js? – vee

+0

@vee - политика позволяет ударить по серверу, но блокирует ответ, поэтому 'data' пуст. –

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