Hoe activeer je een functie met jsonp/jQuery

Ik heb deze functie:

 var current_url=window.location.href;
$.ajax({url:      'http://api.apps.com/html/'+appid,
      data:      {url:current_url},
      dataType: 'jsonp',
      timeout:  10000,
      jsonp: "set_url_target",
      success: function(data) { console.log(data); },
       error: function(jqXHR, textStatus, errorThrown) { console.log(errorThrown); console.log(textStatus); }
      }).done(function() { 
          console.log("Message has been complete!!");
        });

Wat ik wil, is deze functie activeren op http://api.apps.com/html/ ( Merk op dat het een ander domein is).

function set_url_target(url){
    console.log("Url has been recieved: "+url);
}

Tot nu toe wordt het set_url_target niet geactiveerd en krijg ik niets op de console afgedrukt, geen fout of niets .. waarom?

2

2 antwoord

als de externe toepassing niet onder uw controle is, ben ik bang dat u niet veel kunt doen omdat u het antwoord dat door de server naar de client wordt verzonden, moet updaten om JSONP met succes te gebruiken.

dus je hebt twee opties: a) plaats de oproep aan de serverzijde in uw toepassing en stuur deze terug naar de client b) als alternatief om de client helemaal te maken, zou je zoiets als yahoo-pipes of andere services kunnen gebruiken die de reactie json op een geldig jsonp -antwoord transformeren.

hier is een voorbeeld over hoe het te doen met yahoo pipes: https://gist.github.com/316660

Ik ben niet zeker van de licentie, controleer deze en of er en bijbehorende API-/bandbreedtekosten zijn. Laat me weten hoe het voor je werkt ..

2
toegevoegd
Dus eigenlijk is de oplossing om een ​​proxy te gebruiken! ?? Ik probeer html5-berichten met jsonp te emuleren, maar waarom werkt het niet? maar wat ik probeer te doen is een cliënt op verzoek van de klant te doen .. dus u zegt dat het niet mogelijk is .. waarom?
toegevoegd de auteur Dmitry Makovetskiyd, de bron

Probeer dit, let op de kenmerken jsonp en jsonpCallback

    var current_url=window.location.href;
    $.ajax({url:      'http://api.apps.com/html/'+appid,
            data:      {url:current_url},
            dataType: 'jsonp',
            timeout:  10000,
            jsonp : false,
            jsonpCallback: "set_url_target",
       success: function(data) { console.log(data); },
       error: function(jqXHR, textStatus, errorThrown) { console.log(errorThrown); console.log(textStatus); }
  }).done(function() { 
      console.log("Message has been complete!!");
    });

For more info on this, AJAX

0
toegevoegd
nee werkte niet. waarom is de jsonp fout? , zegt het dat hij niet terug moet komen? set_url_target staat op een ander script op een ander domein, niet op het mijne. Ik denk dat je de vraag verkeerd hebt begrepen. !?
toegevoegd de auteur Dmitry Makovetskiyd, de bron
jsonp is ingesteld op false om de naam Callback te overschrijven.
toegevoegd de auteur Furqan Hameedi, de bron