在Ajax响应中创建的对象的引用/范围

时间:2011-12-27 01:52:00

标签: jquery ajax scope response

我一直在尝试倒霉了好几个小时,所以我想我应该问一下(在淘洗stackoverflow之后:S)

如何访问在ajax响应中创建的对象:

    $.ajax({
          type: "GET",
          url: "slideshow.xml", //xml file 
      dataType: "xml",
          success: function(xml) {
            var count = 0; //counter
              $(xml).find('site').each(function() {
                var url = $(this).find('url').text(); //url 
                var imageURL = $(this).find('imageURL').text(); 
                myArray[parseInt(count)] = new Array(imageURL, url);
                count++;
            });

            var slideshow = new simpleGallery({
                wrapperid: "topbar_scroller_inside",
                dimensions: [815, 264],
                imagearray: myArray,
        autoplay: [false, 30000, 99],
                persist: true,
                fadeduration: 1000
            }); 
    }});

问题是如何访问在ajax成功响应中创建的“幻灯片”对象?

我试过访问它,例如:

 <a id="prev" href="javascript:slideshow.navigate('prev')"></a>
然而,那失败了。

我也尝试过:

  <a id="next" href="javascript:jQuery.proxy('slideshow', navigate('next'))"></a>

仍然失败,并且不太确定$ .proxy是否是此处的相关功能。

拜托,我可以帮助你。

2 个答案:

答案 0 :(得分:2)

简单。在ajax调用之上声明变量。

var slideshow;

然后更改成功功能以使用slideshow = ...

此外,您应该将两个a元素的href更改为#,并使用jQuery绑定来实现点击功能:

$('a#prev').click(function() {
    slideshow.navigate('prev');
    return false;
});
$('a#next').click(function() {
    slideshow.navigate('next');
    return false;
});

答案 1 :(得分:-1)

使用JSON的json_decode()。这很简单。它将你的js变量解析为php变量。请在此处查看:http://www.php.net/manual/en/function.json-decode.php