Jquery 使用$.mobile.changePage并传递数据

Jquery 使用$.mobile.changePage并传递数据,jquery,methods,jquery-mobile,Jquery,Methods,Jquery Mobile,我正在努力学习jquerymobile。我觉得这真的很酷,但我有点不知所措。如果我想称之为: $j.mobile.changePage({ url: $j("#News"), data: "apple=banana", type: "GET"}, "slide", true, true); 它似乎不起作用。我不太熟悉用jQuery传递数据,所以可能我做错了什么 你好,塞恩 编辑:对不起,放错代码了…据我所知-url必须是真实的url或另一个div[data role=page]的id 澄清:

我正在努力学习jquerymobile。我觉得这真的很酷,但我有点不知所措。如果我想称之为:

$j.mobile.changePage({ url: $j("#News"), data: "apple=banana", type: "GET"}, "slide", true, true);
它似乎不起作用。我不太熟悉用jQuery传递数据,所以可能我做错了什么

你好,塞恩


编辑:对不起,放错代码了…

据我所知-url必须是真实的url或另一个
div[data role=page]的id

澄清:

提供ID将显示当前文档中可用的另一个div(您可以创建包含多个页面的html文件)


另外-jquerymobile只加载一次页面,并将其添加到文档中供以后参考。以后不会触发服务器端操作。(我不确定它如何处理提供数据的呼叫)

根据反复试验,我看到的情况如下:

  • $.mobile.changePage(“#”+id,filter,false,true)刷新当前视图,但不在服务器上执行请求
  • $.mobile.changePage({url:'#'+id,数据:'code=apple=banana',键入:'GET'},'slide',false,true)不刷新当前视图,但在服务器上执行请求
  • $.mobile.changePage({url:'http://localhost/SomeOtherPage.aspx,数据:'code=apple=banana',类型:'GET'},'slide',false,true)刷新当前视图并在服务器上执行请求

因此,在服务器上执行时,基本URL必须不同,才能更新当前视图。

我遇到了一个场景,需要捕获项目上的点击事件,并显示一个加载的页面(相同的html文件),其中包含点击项目的详细信息。然而,我发现的解决方案半依赖于以下几点:

  • 您的.js方案应该至少包含在全局对象的一个“名称空间”或属性中,以防止重写对全局对象重要的内容或被外部代码重写
  • 您的数据必须已经存在于.js对象中,或者可以通过其他方式访问
将tap事件附加到导致页面转换的元素(甚至是导致页面转换有问题的ina函数)允许您创建如下函数:

function PageTransitionHandle(oEvent)
{
   // Set your stored data to a global object
   oYourNamespace.DataObject = oDataObject;

   // not necissary if already linked to other page but useful when attaching to
   // an image  or other element
   $.mobile.changePage("#otherPageId");
}
在下一页的pageshow事件中:

function PageInit()
{
   var oPageData = oYourNamespace.DataObject;
   // Handle using data from here (i.e calling webmethod using parameters 
   // or setting data according to object)
}
这可能适用于外部页面和内部页面,因为使用了ajax加载方法,但我还没有测试。这对于传递参数甚至整个数据对象来定义其他feild非常有用,或者让用户的信息跟随这些feild,任何事情都可以


另一个方法是,我个人还没有详细研究过这个问题,我认为这是一个Bug。因为这确实有效->url:“新闻”要加载页面,您必须给它一个url。如果您将页面更改为当前html文档中已有的页面,那么数据应该发送到哪里?我注意到了相同的行为;看看Firebug或Fiddler,它向指定的URL(内部或外部)发出请求,执行该主体内的所有请求,但不显示实际页面。我正在使用以下命令: