2

私には2つの機能があります。最初に変数を設定し、次に2番目に最初の関数に必要な情報を取得します。私が最初に抱えていた問題は、ajax応答が発生する前にすべてが返されていたことでした。基本的に私がする必要があるのは、JSONオブジェクトを取得して変数に設定し、そのオブジェクトの特定の側面を使用してそれらをアイテムに追加することです。これが私が持っているものです...

$(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;

            };

成功コールバック内から「data」オブジェクトを返すと、空白が返されます。私がそうすると、AJAX呼び出しのresponseTextは文字列であり、JSONではありません。何か案は?基本的に、最初の関数の$ info変数を2番目の関数のAJAX応答(JSON)に設定する必要があります。

4

2 に答える 2

3

これを削除.responseTextして使用します。

$('#youtube-url').blur(function() {
    youtubeInfo($('#youtube-url').val()).done(function($info){
        if($info.html){
            //alert($info.thumbnail_url);
            //$('#preview_video_thumb').attr('src', $info.thumbnail_url);
        }
    });
});
于 2012-05-29T20:01:04.733 に答える
0

成功関数にあるreturn dataステートメントは、意図したとおりに実行されていません。実際にはajax呼び出しから戻るのではなく、success関数から戻ります。おそらく必要なのは、代わりに次のようなものです。

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) {
                       odata = data;
                      },
                      error: function(xhr, textStatus, errorThrown) {
                        //called when there is an error
                      }
                    });
            return odata;

        };
于 2012-05-29T20:02:34.463 に答える