从javascript书签挂起jQuery + ajax调用

时间:2015-09-18 07:26:34

标签: javascript google-app-engine goo.gl

我要做的目标是自动化我的工作流程。它收集该页面的具体细节,同时生成一个goo.gl缩短的URL,然后将其包装成警报以便于处理。当我将我的javascript放入书签时,它会在尝试使用下面记录的错误执行时挂起。但是,当我将它直接放入控制台时,它按预期工作。

不知道这里有什么解决方案,有什么想法吗?

从书签运行时,控制台会抛出此错误:
Uncaught TypeError: Cannot read property 'setApiKey' of undefined

测试脚本的脚本:https://hireteammate.com/showajob/index/Litepoint-Software-Release-Engineer-Sunnyvale-CA?job_id=7ccfdb23d6f08156bd41c659f2be0eda

使用的实时代码:

javascript: jQuery(document).ready(function($) {
    /* Description Area */
    var title   = $(".job_header_title").text();
    var company = $("#masthead > div > div.row > div > div.row.job-highlight > div > div:nth-child(1) > div.col-lg-4.col-md-4.col-sm-4.col-xs-12 > div > p:nth-child(3)").text();
    var type    = $("#aboutjob > div > table > tbody > tr:nth-child(2) > td:nth-child(2)").text();
    var role    = $("#aboutjob > div > div:nth-child(4) > div.panel-body").text();
    var job     = (company + " company is looking for a " + title + "/" + type + "\n\n" + role);


    /* URL AREA */
    var user = "DanielW1";
    /*  var apiKey = "AIzaSyCE2BK7kOhAKLiRd1BIw9rGZqyM6A58Y94"; */

    var hireteammate = "https://hireteammate.com/invite/join/" + user + "?callback=";
    var callbackUrl = encodeURIComponent(window.location.href);
    var joblink = (hireteammate + callbackUrl);
    var longurl = joblink;

    $.getScript("https://apis.google.com/js/client.js", function(textStatus, jqxhr) {
    /* console.log( textStatus +" "+ jqxhr.status + " Load was performed.");*/ /* Success */
        gapi.client.setApiKey("AIzaSyCE2BK7kOhAKLiRd1BIw9rGZqyM6A58Y94");
        gapi.client.load('urlshortener', 'v1', function() {
            var request = gapi.client.urlshortener.url.insert({
                'resource': {
                    'longUrl': longurl
                }
            });
            var resp = request.execute(function(resp) {
                if (resp.error) {
                    console.log('Error. ' + resp.error.message);
                } else {
                    alert(job + "\n\n" + resp.id);
                }
            });
        });
    });
});

2 个答案:

答案 0 :(得分:0)

从我在https://api.jquery.com/jquery.getscript/的文档中阅读的内容来看,错误似乎是合法的。

  

一旦脚本加载但未必执行,就会触发回调。

您应该查看有关正确整合以下链接中显示的javascript库的文档

dev jscriptsamples

但是我认为您可以通过加载库并提供一个回调函数引用来解决您的问题,该引用将在库加载并执行后执行。

我认为你应该做的是在回调函数中包含需要gapi实例的位,比如说gapiIsLoaded

function gapiIsLoaded() {        

    gapi.client.setApiKey("AIzaSyCE2BK7kOhAKLiRd1BIw9rGZqyM6A58Y94");
    gapi....
}

..并将getScript函数指向此URL

  

https://apis.google.com/js/client.js?onload=gapiIsLoaded

答案 1 :(得分:0)

菲利普似乎是对的。这个问题已经有了一个话题。

jQuery getScript load vs execution

下面的onload回调应解决问题:

https://developers.google.com/api-client-library/javascript/dev/dev_jscript

Nways,我访问了您提供的URL,它只是为select.js抛出了404错误。您能否在提到的网页上说明您在哪里收到此错误?