Jquery AJAX JSON-Antwort in der variable.
Ich haben zwei Funktionen. Das setzt zunächst eine variable, dann die zweite erhält, die benötigten Informationen für die erste Funktion. Das Problem ich war vorher war alles immer zurückgegeben, bevor der ajax-Antwort-geschehen war. Im Grunde, was ich tun müssen, ist erhalten ein JSON-Objekt, und legen Sie es auf eine variable, dann nimmt bestimmte Aspekte des Objekts und fügen Sie diese zu posten. hier ist, was ich habe...
$(document).ready(function(){
$('#youtube-url').blur(function() {
$info = youtubeInfo($('#youtube-url').val());
console.log($info);
if($info.html){
//alert($info.thumbnail_url);
//$('#preview_video_thumb').attr('src', $info.thumbnail_url);
}
});
});
function youtubeInfo(url){
var odata = '';
var result = jQuery.ajax({
url: '<? echo base_url("videos/getOembed") ?>',
type: 'POST',
dataType: 'json',
async: false,
data: {url: url},
complete: function(xhr, textStatus) {
},
success: function(data, textStatus, xhr) {
return data;
},
error: function(xhr, textStatus, errorThrown) {
//called when there is an error
}
}).responseText;
return result;
};
Wenn ich wieder die "data" - Objekt aus der Erfolgs-callback zurückgegeben leer. wenn ich es Tue, wie es ist, den responseText des AJAX-Aufruf einen string, und nicht als JSON. irgendwelche Ideen? Ich im Grunde den $info-Variablen in der ersten Funktion für die AJAX-response (JSON) von der zweiten Funktion.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen
.responseText
und verwenden Sie diese:done
,fail
,always
, undthen
. Es gibt ein paar andere, aber diese vier sind die wichtigsten.done
undfail
sind offensichtlich,always
wird immer aufgerufen werden (offensichtlich zu sein denke ich) undthen
können Sie definieren, sowohldone
undfail
gleichzeitig.then(donehandler,failhandler)
async: false
wenn Sie.done()
Den
return data
- Anweisung haben Sie in der success Funktion ist nicht zu tun, was Sie wollen. Ist es eigentlich nicht zurückgeben, aus der ajax-Aufruf, sondern die Rückkehr aus dem Erfolg der Funktion. Was Sie wahrscheinlich wollen, ist so etwas wie dies:odata
bevor es eingestellt ist.async:false