【发布时间】:2013-06-10 03:57:27
【问题描述】:
好的,我真的需要一些帮助来解决我正在测试的这个问题。我正在尝试使用 JqueryMobile 创建一个测试 phonegap 应用程序,但我有以下问题。
- 我正在创建一个多页 jquery 模板
- 在第一页上,它显示了一个包含来自 JSON 请求的动态链接的项目列表。
- 到目前为止没有问题。当我点击一个链接时,问题就开始了。现在我设法使用脚本 jquery.mobile.router.js 传递 URL 变量。所以网址类似于:test3.html#blog?blog_id=10
- 我找到了一个将
blog_id号码发送到 JSON 请求的脚本,这有点工作。我需要硬刷新才能显示内容。
我的第一个代码(有效):
<script type="text/javascript">
$.ajax({
url: 'test.cfc?method=books&ReturnFormat=json',
dataType: 'json',
success: function(response) {
var data = response.DATA;
var str = '<ul>';
for (var I = 0; I < data.length; I++) {
str += '<li><a href="#blog?blog_id=' + data[I][0] + '"data-transition="slide">' + I + data[I][1] + '</a></li>';
}
str += '</ul>';
$('#output').html(str);
},
error: function(ErrorMsg) {
console.log('Error');
}
});
</script>
然后是第二个代码(不起作用);第一部分尝试过滤在 URL 中传递的 blog_id 数字。警报是检查是否粘贴了正确的值。第二部分应该加载博客的文本,但没有真正起作用。
<script type="text/javascript">
function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
var blog_id = getUrlVars()["blog_id"];
alert(blog_id)
$.ajax({
url: 'test.cfc?method=blog&ReturnFormat=json&blog_id='+blog_id,
type: 'GET',
dataType: 'json',
success: function(response) {
var data = response.DATA;
for (var I = 0; I < data.length; I++) {
str = '<h1>' + data[I][0] + '</h1>' + data[I][1] ;
}
$('#outputblog').html(str);
},
error: function(ErrorMsg) {
console.log('Error');
}
});
</script>
能否请人帮忙批准我的代码或提供一些建议? 谢谢!!
【问题讨论】:
-
你说的不工作是什么意思?请告诉我们更多。警报是抛出
blog_id还是undefined? -
stackoverflow.com/questions/14468659/… 然后转到页面转换之间的数据/参数操作部分。
-
我想了想,想知道这是否可行(上面的代码)?发生的事情是我在加载时加载了所有 ajax 请求,因为它是一个多页模板。因此,当我启动应用程序时,我会收到“未定义”警报,这是正确的,因为尚未传递任何 blog_id。现在,当我单击一个链接(其中包含 blog_id)时,不会加载结果,因为它加载到同一个 DOM 对象中。只有在硬重新加载后它才能工作(我看到警报给了我正确的数字并且加载了博客 txt)。那么有没有解决方案来解决这个问题,还是我需要将我的 blog_text_page 放到另一个文档中?
标签: jquery jquery-mobile cordova parameter-passing