使用 jquerymobile 在 workligh 应用程序中的 url 中发送数组失败
Posted
技术标签:
【中文标题】使用 jquerymobile 在 workligh 应用程序中的 url 中发送数组失败【英文标题】:failed to send array in url in workligh application using jquerymobile 【发布时间】:2014-01-28 11:04:06 【问题描述】:我正在使用 jquerymobile 在 IBM Worklight 中构建一个混合应用程序。 我想将服务器 php 返回的 json 数组发送到 url 中的另一个页面。代码如下所示:searchPools.js 文件 (调用另一个页面的文件)
$(document).undelegate('#srhPool', 'click').delegate('#srhPool', 'click', function()
var source = $("#csource1").val();
var destination = $("#cdest1").val();
var poolDate = $("#pooldate1").val();
if(source == null || source == "")
$("#csource1").parent().css('border','2px solid red');
if(destination == null || destination == "")
$("#cdest1").parent().css('border','2px solid red');
if(poolDate == null || poolDate == "")
$("#pooldate1").parent().css('border','2px solid red');
if(source == null || source == "" || destination == null || destination == "" || poolDate == null || poolDate == "" || validateRadio == false)
alert("Oops! Your Pooling Info is Incomplete.");
else
savePool(userId, source, destination, poolDate, preferVehicle);
);
//save pool info
function savePool(userId, source, destination, poolDate, preferVehicle)
$.mobile.utils.showWaitBox("a", "Wait! Searching Poolers...");
var invocationData9 =
adapter : 'registerUser',
procedure : 'searchPoolData',
parameters : [userId, source, destination, poolDate, preferVehicle]
;
WL.Client.invokeProcedure(invocationData9,
onSuccess : poolSuccess,
onFailure : poolFailure,
);
function poolSuccess(result)
$.mobile.utils.hideWaitBox();
var invocationResult = result.invocationResult;
var array1 = invocationResult.pools;
var dataurl2 = '?array='+array1;
$.mobile.changePage('../../pages/passenger/poolResults.html'+dataurl2, transition: "slide");
function poolFailure(result)
$.mobile.utils.hideWaitBox();
WL.Logger.error('Search Unsuccessful');
poolResults.js(访问数组的文件)
$(document).on( 'pagebeforeshow', '#poolResults', function(event)
var params = new Array();
function getParams()
var idx = document.URL.indexOf('?');
if (idx != -1)
var pairs = document.URL.substring(idx+1, document.URL.length).split('&');
for (var i=0; i<pairs.length; i++)
nameVal = pairs[i].split('=');
params[nameVal[0]] = nameVal[1];
return params;
params = getParams();
getArray = unescape(params["array"]);
alert(getArray);
);
它不起作用。 我想要做的是单击页面中的一个按钮,然后通过 http 适配器检索一些结果。在 searchPools.js 文件中,通过 poolSuccess 函数成功获取了值。现在,这些值将显示在使用 $.mobile.changePage 显示的另一个页面上。 我想知道我使用的方式是正确的,或者可以使用其他方式来实现这一点。
【问题讨论】:
这里有什么问题? worklight adatper 还是你的 js 代码? worklight 适配器工作正常。我提到的是url中发送的数组在其他js文件中没有被访问。另外,告诉我我们可以像我一样在url中发送json数组吗? 您将其作为 json 获取,那么为什么您不能在 changepage successhandler 中调用一个函数并将 json 作为参数发送并在那里使用 json 进行工作? 我不明白你想说什么,请解释一下。 【参考方案1】:这样发送数组
$.mobile.changePage('page2.html', dataUrl : "page2.html?parameter=123", data : 'paremeter' : '123' , reloadPage : true, changeHash : true );
然后像
一样检索它们$("#index").live('pagebeforeshow', function (event, data)
var parameters = $(this).data("url").split("?")[1];;
parameter = parameters.replace("parameter=","");
alert(parameter);
);
For More Info See The Link
为了你的理解传递它为
$.mobile.changePage("newPage.html", data: param1 : YOUR JSON );
并将其检索为
<script type="text/javascript">
$("#newPageId").on("pageshow", onPageShow);
function onPageShow(e,data)
var url = $.url(document.location);
var param1 = url.param("param1");
</script>
【讨论】:
我明白这一点,但正如我所提到的,我想发送我得到的整个 json 结果。据我了解,您想说我只将一个参数(例如,id)发送到其他页面,然后从那里调用 http 适配器并检索结果。 是的,而不是data: 'paremeter' : '123'
,您可以发送您的 json 数据,请参阅链接以供参考。
好的!但是我的应用程序结构是 - 我在一个页面上有一个按钮,当我单击它时,就会调用 http 适配器,如您在 searchPools.js 代码中所见。现在在 poolSuccess 函数上,我得到了 json 数组结果。现在我想在使用 $.mobile.changePage 更改的其他页面上显示这些数组结果。那么,我如何做到这一点。我尝试的是将url中的数组发送到下一页,它可以工作吗?
@himanshu.miet.cse 你错误地尝试了 chagepage jquery 语法 按照我上面展示的方式试试。
我使用相同的语法来发送值,并且它有效。但我不知道可以使用这种技术发送数组。如果我使用 $.mobile.changePage("newPage.html", data: param1 : YOUR JSON );正如你提到的,我可以使用这种技术发送整个数组吗?以上是关于使用 jquerymobile 在 workligh 应用程序中的 url 中发送数组失败的主要内容,如果未能解决你的问题,请参考以下文章
利用jquerymobile怎么写js代码?还跟jquery写事件方法一样吗?求大神帮帮忙
如何在没有 CSS 且仅使用 JavaScript 或 jQuery/jQueryMobile 的情况下更改设备方向?
Cordova/Knockout/jQueryMobile 缓存内存性能