2016-06-12 15 views
1

Bitte schauen Sie sich folgenden Code an, ich kann verschachtelte $ .getJSON() nicht ausführen. Meine URLs sind RESTful und wenn ich sie separat in Fiddler laufen dann arbeiten sie perfekt. Ich habe mich auch in den Methoden um CORS gekümmert.

var uri = "http://www.XXXXXX.XXX/WebService/api/controllername/Chk_mehtod/123"; 
 

 
$.getJSON(uri) 
 
.done(function (data) { 
 
    if (jQuery.isEmptyObject(data)) 
 
    { 
 
     alert("data empty"); 
 
    } 
 
    else 
 
    { 
 
     var Menu_uri = "http://www.XXXXXX.XXX/WebService/api/controllername/Menu_mehtod/465"; 
 
     
 
     alert("Till this alert, code is working"); 
 
          
 
     $.getJSON(Menu_uri, function (menudata) { 
 
      $.each(menudata, function (index, item) 
 
      { 
 
      alert("Hyperlink:" + item.Hyperlink); 
 
      }); 
 
     }) 
 
     .done(function() { alert("Inner Success"); }) 
 
     .fail(function() { alert("Inner Error"); }); 
 
    } 
 
}) 
 
.fail(function() { alert("Outer Error"); });

ich mein Projekt in cordova entwickle ... Visual Studio 2015

Jede Hilfe appriciated wird.

+0

Willkommen bei Stack-Überlauf! Haben Sie die Chrome-Entwicklertools auf JavaScript- oder Netzwerkfehler überprüft? –

+0

Ich habe es in jsfiddler überprüft und es funktioniert gut ... aber wenn ich es auf Android Emulator dann zuerst GetJson funktioniert perfekt, aber zweitens fehlgeschlagen. –

+0

Ja, ich vermute, dass es mit dem Whitelist-Plugin zu tun hat. Öffnen Sie Chrome Dev Tools und wählen Sie auf der Seite chrome: // inspect den Emulator aus. Sie sollten dann sehen können, ob auf der Konsole Fehler aufgetreten sind. Bitte posten Sie diese. –

Antwort

0

Sie sollten bereits einen Meta-Tag in der HTML-Seite haben, so etwas wie dies:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' 
    data: gap: https://ssl.gstatic.com 'unsafe-eval'; 
    style-src 'self' 'unsafe-inline'; media-src *"> 

Da es keinen img src-Wert ist die Vorgabe ‚Selbst‘ aber Sie sind aus Daten geladen werden Sie von einer externen Quelle geholt. Fügen Sie also einen img-src-Wert wie folgt hinzu:

img-src 'self' data:; 

Beachten Sie den enthaltenen Doppelpunkt.

Sie können mehr über die Content-Sicherheitspolitik auf dieser praktischen Website lesen: http://content-security-policy.com/

+0

Hallo , jetzt habe ich folgende noch Fehler verwendet, gibt es: Fehler: GET file: /// D:/Projekte/LoginApp/LoginApp/www/cordova.js net :: ERR_FILE_NOT_FOUND Abgelehnt, um das Bild 'Daten: image/gif; base64, R0lGODlhAQABAIAAAAAAAP /// ywAAAAAAQAAAACAUwAOw ==' zu laden, da es gegen die folgende Inhaltssicherheitsrichtlinie verstößt: "img-src 'self' http: // www.XXXX.XXX/ " –

+0

Ich weiß jetzt, dass meine erste Antwort es erlauben würde, ein Bild von der externen Website zu holen. Was Sie wollen, ist, dass es die Daten erlaubt: Schema. Ich werde die Antwort aktualisieren. –

+0

für ab sofort, ich möchte Daten zulassen: von externen Website ... Auch wenn ich "else" Teil aus meinem Skript dann auch diese zwei Fehler sind da .... aber meine Frage ist anders ... geschachtelt $ .getJson funktioniert nicht ... wenn ich die oben genannten zwei URLs in verschiedenen Button-Klick-Ereignis ausführen, dann werden sie perfekt laufen ... danke für schnelle Antwort .... –

0

Jetzt verstehe ich, warum es nicht für mich zu arbeiten, weil $ .getJSON() asynchron ist, und ich habe Code in dem ersten Anfrage umleiten ...

$ .getJSON() ist eine Kurzschreibweise für $ .ajax(), die so konfiguriert werden kann, dass sie synchron ist.

Ich habe zu viele neue Dinge bei der Lösung dieses Fehlers gelernt.

Vielen Dank für Ihre Antwort.

0

Bitte überprüfen Sie dies die Ausgabe im Netzwerk Registerkarte ist ..

Network Tab

+0

Zwei Dinge: Erstens werden Ihre Web Service-Aufrufe nicht angezeigt. Entweder werden sie überhaupt nicht ausgeführt, oder Sie haben diese Zeilen nicht eingefügt. Zweitens sagt mir die fehlende cordova.js, dass diese Ausgabe nicht erfasst wird, wenn Ihre App auf einem Gerät oder Emulator läuft, sondern auf einer Webseite. –