$ .getJSON funktioniert nicht

7

Ich suche nach verwandten Themen in jQuery. Aber ich habe keine Methode gesehen, um mein Problem zu lösen.

%Vor%

Hier gibt es vier Probleme:

  1. Warum die erste Warnung ("Weblink") nicht angezeigt wird.
  2. Warum dieser Code die JSON-Daten nicht von der Website abrufen kann
  3. Das Ziel dieses Codes besteht darin, das from_user-Tag aus der json-Datei abzurufen und in das Array userList zu speichern.
  4. Die Variablen in "$ .each (Daten, Funktion (entryIndex, entry) {" Anweisung, die Funktion haben zwei Eingabeparameter ist ein EintragIndex und andere ist Eintrag, ich bin so Wunder, dass diese beiden Parameter für was ist und wie Kann ich diese zwei Parameter verwenden?

Kann mir jemand helfen, dieses Problem zu lösen? Ich war einen Tag lang hier drin. Vielen Dank.

    
Jimmy Lin 14.05.2011, 14:07
quelle

5 Antworten

14

Ein paar Probleme dort:

  1. getJSON führt eine Ajax-Anfrage durch. Ajax-Anfragen unterliegen der Richtlinie für gleiche Herkunft . Solange Ihre Seite nicht von http://test.com geladen wurde (oder ein paar andere Vorbehalte), wird es nicht funktionieren. Du suchst wahrscheinlich nach JSON-P (welches jQuery auch unterstützt), vorausgesetzt der Server unterstützt es.

  2. getJSON ist wie alle ajax-Anfragen standardmäßig asynchron , sodass Ihre zweite Warnung (mit der Benutzerliste) vor erfolgt, wenn die Anfrage abgeschlossen ist . Obwohl Sie Ajax-Anfragen synchron machen können, ist dies eine sehr schlechte Idee (blockiert die Benutzeroberfläche der meisten Browser während der Anfrage). Verwenden Sie stattdessen die Benutzerliste, nachdem Sie sie im Rückruf erhalten haben, anstatt zu versuchen, sie in der Funktion getJSON aufrufen zu verwenden.

Bearbeiten : Sie haben unten gesagt, dass Sie versuchen, die Twitter-Such-API zu verwenden. Diese API unterstützt JSON-P. Wenn Sie also JSON-P für Ihre Anfrage verwenden, sollte es funktionieren. z.B.:

%Vor%

... aber das wollen Sie sicher nicht für jedes Textfeld im Formular tun?

Hier ist ein Live-Beispiel , aber ohne Formular (und nur eine Anfrage, keine Anfrage für jedes Feld).

    
T.J. Crowder 14.05.2011, 14:11
quelle
4

Fügen Sie einfach zum Link

hinzu %Vor%

oder

%Vor%

(wenn es die erste und einzige GET-Variable ist) Dadurch wird Ihr Anruf in den JSONP-Anruf geleitet, der keine Probleme mit der Same-Origin-Richtlinie verursacht.

    
nagisa 14.05.2011 14:16
quelle
1

Nicht sicher, aber brauchen Sie keine Argumente? Versuchen Sie Folgendes:

%Vor%     
Chris 14.05.2011 14:10
quelle
1

Verwenden Sie die MVC-Plattform? Offensichtlich blockiert MVC 2.0 standardmäßig GET-Anfragen an Aktionen, die ein JsonResult zurückgeben. Check out:

Ссылка

Ich hatte das gleiche Problem beim Upgrade einer bestehenden Anwendung (geschrieben in MVC v1), die .getJSON-Aufrufe verwendet, um Daten von MVC Controller zu View (via jquery / javascript) & amp; Ich konnte nicht herausfinden, warum sie nicht gearbeitet haben. Ich habe verschiedene Versionen von jQuery ohne Glück ausprobiert, dann habe ich den obigen Link gefunden. Ich wechselte stattdessen zu POST (und änderte auch leicht, wie die Daten vom Controller gesendet wurden - benutztes Wörterbuch) und ließ es arbeiten - schließlich !!

Viel Glück! JayD

    
JayD 29.06.2011 01:06
quelle
0

Ich möchte einen weiteren Grund hinzufügen, warum jQuery.getJSON () in einer Entwicklungsumgebung unter IIS für Windows möglicherweise nicht wie erwartet reagiert.

Nach allen hier beschriebenen Prozeduren konnte ich keine Daten aus einer * .json Datei erhalten, nur wenn ich die Erweiterung in * .js änderte, der Antwortstatus wurde zurückgegeben

%Vor%

Dann habe ich mich daran erinnert, dass es bei IIS einige MIME / Typen gibt, die nicht spezifiziert sind. Das Hinzufügen von MIME / Typ application / json für Dateien mit der Erweiterung .json hat mein Problem gelöst.

Informationen zum Hinzufügen von MIME / Typen auf iis7.

    
raphie 24.03.2016 17:21
quelle

Tags und Links