Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „JQuery AJAX - 404 Error obwohl das Ziel vorhanden ist.“

AxelM

Nicht mehr ganz neu hier

Hallo,
http://maindealz.wpforge.de/verify/
habe ich eine Seite gebaut, die Verschiedenes per AJAX abschicken soll und im Idealfall dann auch eine Antwort erhält.
Das Problem ist jetzt, dass der Link der aufgerufen wird durchaus existent ist und auch aufgerufen werden kann,,,
http://maindealz.wpforge.de/verify/ws.php
Die Console meldet aber 404.
Die ws.php läuft im wordpress context.
Formular und ws.php befinden sich unterhalb einer Wordpress installation

Danke schon mal für eure Antworten
 

Curanai

Aktives Mitglied

Bei mir kommt kein Form - bei mir kommt direkt das JSON.

Ich tippe auf einen gesetzten bzw. fehlenden Backslash - je nach Location. Gibt es eine htaccess-Regulierung, die den Zugriff in das Verzeichnis unterbindet? Viele Möglichkeiten hast Du nicht ... ^^
 

Curanai

Aktives Mitglied

So, ist bin der Meinung, dass folgendes helfen würde:

Code:
$(document).ready(function(){
   $('#sendButton').on("click", function(e){
     e.preventDefault();
     var sku = $('#sku').val(),
       code = $('#code').val(),
       use = 0;
    
     $.post("/verify/ws.php", { sku: sku, code: code, use: use }, function(data){
       alert( "Data Loaded: " + data );
     });
   });
});

Das ist die überarbeitete Version aus Deinem Source (JavaScript). Meine Änderungen:
- on() statt click()
- $.post() statt $.get() (denn Du schickst was zum Server, was u. U. nicht gecached werden soll)
- Wegfall von .done()

Bedenke bei meinem Hinweis auf die htaccess, dass diese "höher" (im Verzeichnis) liegen kann und nach unten vererbt werden könnte. Zum Test: Lege ws.php mal ins Root und passe $.post() oben an ...

Wenn Du mir noch eine Randnotiz erlaubst: JavaScript und domready-Zeug immer gern ans Ende, damit der Browser zügig mit dem Rendering für den Besucher anfangen kann (dafür benötigt er nur CSS oben im Head - der Rest verzögert "a weng").


EDIT: Hinweis noch .. im Browser gibt es eine "same origin policy" - das hat vielleicht nichts damit zu tun, aber vielleicht stört bereits das Protokoll in der AJAX-Url.
 

AxelM

Nicht mehr ganz neu hier

Danke der Tipp mit dem JS nach unten ist ne gute idee.
Statt GET POST zu nehmen ist ungeschickt, weil die ws php das Json ggf auch nach aufruf eines Links bereitstellen muss...
wenn ich diewp-blog-header.php nicht include gehts....
 

Curanai

Aktives Mitglied

Im Gegenteil: $.get() nimmt man eigentlich für "Daten holen" - $.post() für "Daten senden" (damit Du serverseitig bspw. nicht schauen musst, was Du da machst). Das ist kein geschriebenes Gesetz - keine Bange. Aber es ist nicht ungeschickt, da $.get() cached und bei $.post() eben nicht; nicht ganz unwichtig.

Wenn Du JSON aus dem Callback (data) erwartest, kannst Du das bequem mit
Code:
var json = $.parseJSON(data);
entgegen nehmen und bekommst direkt ein verwendbares Object. Von Mischbetrieb (mal so, dann so oder doch so) rate ich dringend ab. Natürlich kannst Du auch $.ajax() nehmen, aber gefühlt in 99,9 % der Fälle kommt man mit $.get() und $.post() zurecht.

Was steht in der besagten Header-Datei, dass diese Behinderung stattfindet? Kurios ist nämlich hierbei: Das ist eine inkludierte PHP-Datei - diese kommt nur gerendert/berücksichtigt im Browser an und wird keinen unmittelbaren Einfluss zur Laufzeit von JavaScript ausüben können.


EDIT: Bevor wer schimpft - $.getJSON() gibt es auch und ich kenne das! ^^
 

afr0kalypse

Allwissendes Karmameerschweinchen!

Ich denke nicht, dass das helfen wird. javascript wird ja immer noch vom client ausgeführt. und selbst wenn die ws.php direkt aufgerufen wird, gibt es da irgendwo nen error 404.
Ich tippe eher darauf, dass die Datei / der Ordner vielleicht falsche Berechtigungen hat.. Prüfe mal Owner / Gruppe und deren Rechte.
 

Curanai

Aktives Mitglied

Auch 'ne Maßnahme - entweder selbstgemachtes Leid (via FTP-Client) oder (bspw.) via chmod() durch WP selbst ... oder doch 'ne htaccess an anderer Stelle. :D Aber leider passt das ja nicht mit der include()-Beschreibung (Entnahme = läuft) zusammen ... schon recht merkwürdig auf der Domain. ;)
 

afr0kalypse

Allwissendes Karmameerschweinchen!

Da WordPress genutzt wird und Permalinks auf dem Server laufen (bsp: http://maindealz.wpforge.de/leider-verpasst/), muss es auch irgendwo eine .htaccess geben. Normalerweise im WordPress Hautpverzeichnis. Jetzt weiß ich aber nicht genau, wie WordPress bei aktiven Permalinks auf den direkten Aufruf von php Scripten reagiert.
Vielleicht liegt auch da der Hund begraben... :(

EDIT: Oder es liegt am Ajax Aufruf selbst. Da gibts WordPress-seitig ja auch Vorgaben, wie man das zu tun hat:
http://codex.wordpress.org/AJAX_in_Plugins
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.189
Beiträge
2.582.077
Mitglieder
67.259
Neuestes Mitglied
SaschMasch1312
Oben