2014-03-24 22 views
0

我对DOM以下jQuery函数准备:jQuery的/ Ajax的成功方法实现

$.ajax({ 
    url : '/weather/', 
    type: 'GET', 
    //dataType : "json", 
    success : function(data) { 
    alert("success"); 
    var jsondata = Object.keys(data); 
    alert(jsondata); 
    location = "testing"; 

    alert(data.weather); 
    weather = data.weather; 
    $("location").text(location); 
    } 
    }).setTimeout(executeQuery, 500); 

Ajax调用返回里面我是用改变我的html值适当JSON。但是,执行此行时,

$("location").text(location); 

页面被重定向到一个url,该url附加上面一行中'location'的值。我在别处使用了这些行,而没有使用成功函数调用。

有人可以帮我做我应该做的事,以防止发生这种重定向吗?

+0

jQuery选择器将找到一个DOM节点。但是,在这种情况下,它将转到document.location属性,该属性不正确。选择器可能缺少一个id(“#”)或class(“。”)标识符。 http://api.jquery.com/category/selectors/ – Askanison4

回答

2

不,问题在于您使用的变量名称。

请勿使用location,因为如果将任何字符串指定给location,它将重定向到给定的字符串。

location="http://nettpals.com";将重定向到我的网站。

使用任何其他变量的名称,如loc

另外,如果你是和定位的一类,它的前缀与.,如果你的目标ID,前缀,它#

$('.location')$('#location')

当你使用$('location')时,你试图匹配位置元素<location></location>,这显然不是你想要的。

+0

啊,够公平 - 所以它不是$(“location”)。文本(位置)导致的问题,而不是位置=“测试” 我没有想到,这个回调会一直在窗口范围。 – Montagist

+0

你是什么意思? –

+0

我的意思是在这种情况下位置和window.location是相同的东西。这可能可以用范围来玩,这样你可以使用位置变量,但不值得。也许即使只是使用var location =“”也可以做到。 – Montagist

4

对于其中之一,您的课程或ID选择器无效。应该是:

$(".location").text(location); 

$("#location").text(location); 

根据您的HTML标记是否使用分别 “位置” 的class和id。

而且,在这种特殊情况下,你没有这个词变种:

var location = "testing"; 

导致浏览器承担顶层窗口范围。 window.location是设置它的值时重定向的属性。

+1

是的,使用'$(“location”)'将重定向我猜测不是目标的网页。 +1 – Askanison4

+0

我认为这是类似的东西,但OP意味着不使用引号。只是一个疏忽或什么的东西。 – Montagist

+0

啊哎呀。忘记我的评论中的引号。是的,使用类似于OP中的选择器只是返回或设置'document.location'对象。 – Askanison4

相关问题