0

スクリプトを作成し、URL短縮APIを呼び出して短縮URLを返し、そのリンクを入力ボックスの値に設定する関数getShareがあります。

第二に、私は最初に作業しようとしているこの機能も持っています。これまでのところ、ローダー gif を .show することしかできませんでしたが、関数が成功したときにそれを非表示にすることはできませんでした。

編集: 以下は、response.success 内の元のスクリプトを使用して更新されたコードですが、リソースの読み込みに失敗したというメッセージがコンソールに表示され、404 - 見つからない URL が表示されます。http://b1t.co/Site/api/External/MakeUrlWithGet?callback=apiCallback&_=1391704846002

function getShare(url)
{ 
    $('#loader').show(); // show loading...
    $.ajax({
        dataType: "jsonp",
        jsonpCallback:'apiCallback', // this will be send to api as ?callback=apiCallback because this api do not want to work with default $ callback function name
        url: 'http://b1t.co/Site/api/External/MakeUrlWithGet',
        data: {'url':url},
        success: function(response){
            $('#loader').hide(); // hide loading...
            //respponse = {success: true, url: "http://sdfsdfs", shortUrl: "http://b1t.co/qz"} 
            if(response.success){

                {       
                var s = document.createElement('script');
                var browserUrl = document.location.href;
                //alert(browserUrl);
                if (browserUrl.indexOf("?") != -1){
                        browserUrl = browserUrl.split("?");
                        browserUrl = browserUrl[0];
                }
                //alert(browserUrl);

                var gifUrl = $('#gif_input').value;
                var vidUrl = $('#gif_input').value;
                //alert(gifUrl + "|" + vidUrl);

                url = encodeURIComponent(browserUrl + "?gifVid=" + gifUrl + "|" + vidUrl);
                //alert(encodeURIComponent("&"));
                s.id = 'dynScript';
                s.type='text/javascript';
                s.src = "http://b1t.co/Site/api/External/MakeUrlWithGet?callback=resultsCallBack&url=" + url;
                document.getElementsByTagName('head')[0].appendChild(s);
                }

function resultsCallBack(data)
{
    var obj = jQuery.parseJSON(JSON.stringify(data));
    $("#input-url").val(obj.shortUrl);
    }
    }
},
    error:function(){
    $('#loader').hide();
    }
    });
}
4

1 に答える 1

1

「組み合わせる」必要はありません。

誰かが提案しているのは、通常の ajax メソッドです。成功時に実行したい js スクリプトをsuccess:コールバック内に移動するだけです。

私がここで行った別の回答でajaxメソッドの詳細をお読みください:または jQuery のドキュメント: http://api.jquery.com/jQuery.ajax/

注: これを使用するには、jQuery と、おそらく IE 10 未満をサポートする ajax 用の XDR プラグインが必要です。

于 2014-02-06T16:21:50.687 に答える