0

我有一个函数 getShare ,它创建一个脚本,然后调用一个 url 缩短器 api,然后返回一个缩短的 url 并将该链接设置为输入框的值。

其次,我也有这个功能,我正在尝试使用第一个功能。到目前为止,我只能 .show 加载器 gif,但不能在函数成功时隐藏它。

编辑:下面是我在 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 方法。success:只需在回调中移动您想要在成功时执行的 js 脚本。

在我在这里做的另一个答案中阅读有关 ajax 方法的更多信息:https ://stackoverflow.com/questions/21285630/writing-my-first-rest-api-call-to-a-webservice-endpoint-post/21286810#21286810或 jQuery 的文档:http ://api.jquery.com/jQuery.ajax/

注意:要使用它,您将需要 jQuery 和可能的 ajax 的 XDR 插件以支持 < IE 10

于 2014-02-06T16:21:50.687 回答