2017-01-23 3 views
-1

$ .ajax ist in neue 'Get' Funktion verpackt.

Wenn nur ein 'get' in der js-Datei aufgerufen wird, ist es in Ordnung. Aber 2 Anrufe in Zeile fehlschlagen.

Präziser, ersten Anruf nicht mit „Uncaught Reference: Prozess nicht definiert ist“, zweite erfolgreich ist, aber in der Erfolgsfunktion hat es Daten für die erste ‚get‘ aufrufen.

Wie ich erraten kann, gibt es ein Problem mit "diesem"/Kontext. Kannst du es mir erklären?

(function() { 
     "use strict"; 

     function get(url, success, error) { 
      $.ajax({ 
       type: "GET", 
       dataType: 'jsonp', 
       jsonp: 'callback', 
       jsonpCallback: 'process', 
       url: url, 
       success: success, 
       error: error 
      }); 
     } 

     get('XXX', 
      function(data, textStatus, jqXHR) { 
       console.log("SUCCESS PING 1"); 
       console.log(data); 
      }, 
      function(jqXHR, textStatus, errorThrown) { 
       console.log("ERROR PIND 1"); 
      }); 

     get('YYY', 
      function(data, textStatus, jqXHR) { 
       console.log("SUCCESS PING 2"); 
       console.log(data); 
      }, 
      function(jqXHR, textStatus, errorThrown) { 
       console.log("ERROR PING 2"); 
      }); 
    })(); 

/* 
=========================================== 
===============console===================== 
=========================================== 
1. ERROR PIND WAR 
2. Uncaught ReferenceError: process is not defined 
    at db?callback=process&_=1485184752755:1 
3. SUCCESS PING DB 
4. Object {data for first call here} 
*/ 
+0

vielleicht lösen Sie in einem anderen JSONP Rückruf passieren sollte. –

Antwort

0

Zunächst einmal, es ist besser ('jsonpCallback' Parameter) keine

http://api.jquery.com/jQuery.ajax/

jsonpCallback Type: String or Function() Specify the callback function name for a JSONP request. This value will be used instead of the random name automatically generated by jQuery. It is preferable to let jQuery generate a unique name as it'll make it easier to manage the requests and provide callbacks and error handling. You may want to specify the callback when you want to enable better browser caching of GET requests. As of jQuery 1.5, you can also use a function for this setting, in which case the value of jsonpCallback is set to the return value of that function.

Die Sache ist eine benutzerdefinierte Callback-Namen angeben, dass jQuery in der globalen Funktion erstellt Fensterobjekt mit dem angegebenen Namen und später entfernen. Ich habe es nicht geschafft, ein vollständiges Bild davon zu bekommen, was in jQuery-Bibliothek passiert, aber das Problem wird definitiv durch Tatsache verursacht, dass es versucht, Funktion aufzurufen, die gerade entfernt wurde.

Entfernen jsonpCallback param ein Problem