2010-08-01 3 views
1

J'ai utilisé jQuery.post dans plusieurs scripts jQuery maintenant, et tout fonctionne correctement. Mais après la mise à niveau vers WordPress 3.0, il a cessé de fonctionner.Impossible de trouver le fichier à l'aide de jQuery.post

Je travaille sur un plug-in où je HVE le code jQuery suivant:

//Delete event and remove from UI 
jQuery("#eventList .cancelEvent").live('click', function() { 
    jQuery.post("/wp-content/plugins/wp-eventcal/myfile.php", { instance: 'cancelEvent' }, 
    function(data) 
    { 
    alert('test'); // Never fires because 404 File Not Found 
    }); 
}); 

Firebug fait état d'un '404 Fichier introuvable' erreur. C'est le lien: http://mysite.com/wp-content/plugins/wp-myplugin/myfile.php

Si je copie le lien et le colle dans mon navigateur, la page s'ouvre très bien. Aucune erreur '404 Fichier introuvable'.

regardant mon erreur Apache journal, je vois l'erreur suivante:

Cannot map GET 
/wp-content/plugins/I:/Development/wamp/www/norwegianfashion/wp-content/themes/norwegianfashion/images/icon.png HTTP/1.1 to file, 
referer: http://norwegianfashion.com/wp-admin/admin.php?page=wp-eventcal/eventcal-manager.php 

Voici ma config Apache:

LoadModule rewrite_module modules/mod_rewrite.so 


NameVirtualHost localhost 

<VirtualHost localhost> 
    ServerName localhost 
    DocumentRoot "I:/Development/wamp/www/" 
</VirtualHost> 

<VirtualHost localhost> 
    ServerName mysite.com 
    DocumentRoot I:\Development\wamp\www\mysite 
</VirtualHost> 

<Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
</Directory> 

Et voici mon fichier .htaccess:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

# END WordPress 

MISE À JOUR

Ok, je l'ai réduit à ceci.

Je rencontre uniquement le problème lorsque j'active le Permalink personnalisé en utilisant /% category% /% postname%.
Si j'utilise permalink par défaut, tout fonctionne correctement.

Encore une fois, pourrait-il s'agir de mon fichier .htaccess?

+0

Etes-vous sûr que ce n'est pas un problème de référent, ou que le blocage des spams que WordPress fait empêche la requête AJAX? –

+0

Voir mis à jour ino – Steven

Répondre

1

Vérifiez simplement le journal des erreurs d'Apache et vous verrez le chemin de requête réel et pourquoi il est refusé. Très probablement vous avez échoué avec le chemin relatif à myfile.php ou wordpress le bloque.

Vous pouvez également essayer de définir le chemin complet vers myfile.php dans votre code JS.

+0

Merci pour le conseil. J'ai trouvé quelque chose d'intéressant dans le journal des erreurs (voir mise à jour). Il semble qu'Apache est la cause du problème - routage incorrect ou quelque chose. Des idées pour ce que cela pourrait être? – Steven

+0

@Steven J'ai eu une seule idée sur la façon d'obtenir une telle erreur - peut-être que vous avez demandé I:/Development ... directement à un moment donné, alors jQuery a essayé d'obtenir mysite.com/wp-content/plugins/i:/development. ... Pouvez-vous essayer de changer la troisième ligne dans votre exemple JS à jQuery.post ("/ wp-content ...? –

+0

Nope, n'a pas fonctionné .Mais j'ai réduit mon problème.Voir la mise à jour – Steven

0

Vous êtes sûr que l'URL est correcte? C'est relatif à la page HTML, et wordpress 'index.php est normalement au même niveau que le répertoire wp-content. Je serais enclin à penser que l'URL devrait être "wp-content/plugins/wp-eventcal/monfichier.php"?

+0

dans mon fichier PHP, avant le '', j'ai écrit TEST - et c'est sorti lorsque j'ouvre mon fichier en utilisant la même URL – Steven

+0

Comment voulez-vous dire "ouvrir avec la même URL"? Évidemment, vous ne pouvez pas charger un fichier dans une barre d'adresse du navigateur avec une URL relative, elle doit donc être différente de votre exemple de code.Quelles sont les URLs absolues? – Jhong

+0

Je ne suis pas sûr non plus de la pertinence du DNS et de la configuration d'apache dans ce cas. Si vous pouvez charger la page avec le JavaScript, alors votre site est déjà configuré, avez-vous essayé de changer '../wp-content/plugins/wp-eventcal/myfile.php' à 'wp-content/plugins/wp-eventcal/monfichier.php'? – Jhong

Questions connexes