2010-06-05 13 views
2

J'utilise ce code pour publier sur une page php:

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

dans mon fichier PHP j'ai ceci:

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

l'alerte arrive, mais est vide. pour une raison quelconque, les données sont vides même si je fais écho à partir du fichier PHP. J'ai aussi essayé juste en écho "salut" mais cela n'a pas fonctionné non plus. Qu'est-ce que je fais mal?

merci.

+3

Le fichier PHP est-il sur le même domaine? –

+0

non, mais cela ne devrait pas importer, non? J'utilise l'URL complète dans la demande. – vee

+0

devinez nous de voir plus de votre code pour vous dire! tout d'abord, assurez-vous que vous utilisez l'URL correcte, vous pouvez probablement le faire en l'entrant dans le navigateur; pour en savoir plus sur les données envoyées entre votre navigateur et le serveur, essayez quelque chose comme firebug (https://addons.mozilla.org/de/firefox/addon/1843/), qui peut vous montrer dans sa console l'URL appelée, quelles sont les données qui sont publiées etc ... –

Répondre

2

Vous ne pouvez pas effectuer une requête interdomaine comme celle-ci, ce qui vous bloque s'appelle same-origin policy, afin d'empêcher les demandes inter-domaines malveillantes (même si votre intention n'est pas malveillante, elle est toujours bloquée).

Vous pouvez utiliser JSONP pour cette situation, mais ne pas obtenir le contenu html/texte normal comme vous l'avez. Here's a short writeup with a better description on JSONP, ou here for a full example mais you need to return JSONP from PHP.

En ce qui concerne le pourquoi? C'est parce que http://evil.com/ ne devrait pas être en mesure de faire des demandes à http://mybank.com sans certaines vérifications en place, c'est pourquoi la politique existe.

+0

Les requêtes GET interdomaines sont autorisées :) – Anpher

+0

Tout le php s'exécute correctement via ce fichier .post, et tout est inséré dans ma base de données. Comment cela se passe-t-il malgré la politique? la politique empêche-t-elle simplement que les données soient transmises du php à js? – vee

+0

@vee - La politique vous permet de frapper le serveur, mais bloque la réponse, c'est pourquoi 'data' est vide. –