2012-04-17 52 views
0

我想使用ajax调用从服务器端使用JquerMobile框架获取一些值作为JSON对象。这在桌面Chrome浏览器中没有任何问题。这不适用于手机浏览器。任何帮助指出我在这里做错了什么将有所帮助。下面的脚本。JqueryMobile,AJAX和JSON

$("#showmore").live("click", function(event, param1){ 
    event.preventDefault(); 
    getUrl = $(this).attr('href'); 
    $.post(getUrl, function(data){ 
     $('#sname').html(data.name); 
    },"json"); 
    return false; 
}); 

如果我在警告框中打印回调数据,我会得到当前页面的HTML内容!在桌面浏览器中,我获得了正确的值。感谢您的帮助!

回答

0

我有这个相同的问题。我只在iPad上遇到过此问题,无法找到解决办法。尽管我能找到解决方法。可以使用data-attribute,如data-href。将data-href属性设置为与href属性相同,并在您的jQuery代码中引用data-href属性。

似乎有一个错误,在某些版本的Mobile Safari中无法获得正确的href属性值。您使用AJAX请求加载相同页面的原因是因为通过JS返回给您的href值是空的,指的是它的父文档。

JS -

$("#showmore").live("click", function(event, param1){ 
    var getUrl = $(this).attr('data-href');//no need to create a global variable, so use the `var` keyword here 
    $.post(getUrl, function(data){ 
     $('#sname').html(data.name); 
    },"json"); 
    return false; 
}); 

HTML -

<a data-href="foobar.html" href="foobar.html" id="showmore">SHOW MORE!</a> 

注意return false在jQuery的事件处理程序在功能上等同于调用event.preventDefault()event.stopPropagation()在同一时间。

+0

+碧玉。谢谢!这是问题。看起来像attr('href')返回#。它并没有让我打印或提醒我正在使用的href!我用data-href解决了这个问题。 – PackedUp 2012-04-17 21:11:26