0

这可能是一项简单的任务,但我只是在学习 jQuery、JSON 和 Javascript 之间的关系。我使用 jQuery 从我的数据库中提取并创建一个名为 res[i].showlink 的变量,它是一个 url。这是我的调用代码的一部分。

   $.get("http://databasecall=json", {}, function (res) {
       $.mobile.hidePageLoadingMsg();
       if (res.length) {
           var s = "";
           for (var i = 0; i < res.length; i++) {
               s += "<li><a name=" + res[i].id + " href='" + "javascript:openGoogle()" + "'>" + res[i].showlink + "</a></li>";
           }
           $("#showList").html(s);
           $("#showList").listview("refresh")
       }, "json");

问题是我想在上面代码之外的 javascript 函数 (openGoogle) 中重用 res[i].showlink 数据库变量。当我重用数据库变量 res[i].showlink 时,它不再包含数据库中的数据。如何在上面的 jQuery/JSON 代码之外重用变量?我真的很感激任何建议。谢谢!

4

4 回答 4

2

您需要存储res对调用外部的引用get- 否则,它是有范围的,并且正如您所注意到的,您无法从调用外部访问它。尝试这样的事情:

var globalRes = null;

$.get("http://databasecall=json", {}, function(res) {
    globalRes = res;
    $.mobile.hidePageLoadingMsg();
    if (res.length) {
        var s = "";
        for (var i = 0; i < res.length; i++) {

            s += "<li><a name=" + res[i].id + " href='" + "javascript:openGoogle()" + "'>" + res[i].showlink + "</a></li>";

        }
        $("#showList").html(s);
        $("#showList").listview("refresh")
    }, "json");​

调用后,globalRes将包含 的值res,但将是全局的,这意味着您可以从get调用外部访问它。

于 2012-07-09T20:50:25.330 回答
2

您将该值存储为锚标记的内容,您也可以从那里访问它。

改变

javascript:openGoogle()

javascript:openGoogle.apply(this)

然后在里面openGoogle,你可以使用$(this).text()

编辑
另一个选项是将值直接作为参数传递。

改变

javascript:openGoogle()

javascript:openGoogle(" + res[i].showlink + )

然后修改

function openGoogle() {

function openGoogle(showlink) {

并使用

alert(showlink);
于 2012-07-09T20:51:06.063 回答
0

将值保存在全局变量中:

$.get("http://databasecall=json", {}, function (res) {
    window.myResult = res;
    ....
}

然后使用它

于 2012-07-09T20:50:23.360 回答
0

您需要将其存储在 ajax 返回调用范围之外的变量中。

因此,例如,您可以:

           var resData;

在包含的 javascript 文件的顶部

然后将您的代码替换为

$.get("http://databasecall=json",        {}, function(res) {
                                   $.mobile.hidePageLoadingMsg();
                                   if(res.length){
                                   resData = res;
                                   var s = "";
                                   for(var i=0; i<res.length; i++) {

                                   s+= "<li><a name=" + res[i].id + " href='" +      "javascript:openGoogle()" + "'>"  + res[i].showlink +  "</a></li>"; 

                                   }
于 2012-07-09T20:52:40.457 回答