第二个ajax调用无法在Phonegap Jquery移动Windows手机8中工作

时间:2013-08-31 17:44:34

标签: javascript ajax jquery-mobile windows-phone-8 cordova

我正在使用Jquery mobile构建一个phonegap应用程序,我使用ajax调用与tomcat服务器进行通信。我的所有脚本都位于应用程序中。我的第一个ajax调用工作,我的第二个ajax调用不适用于Windows Phone 8,它适用于Android和iOS。

我正在使用单一域名,我也使用过跨域标志,以防万一仍然没有运气第二次ajax调用。我在每个JQM页面都有ajax调用,只有登录页面中的ajax调用工作,所有其他ajax调用都不起作用,虽然我得到(HTTP 200 OK)作为响应,我没有在Tomcat中看到请求登录服务器(虽然我可以看到第一次登录ajax请求)。

我认为在初始ajax调用(登录)期间创建的jsession ID在导航到下一个JQM页面时会以某种方式丢失。

这是我在我的应用程序中使用的ajax调用,

request = $.ajax({
url: "http://X.X.X.X/Servlet/Login",
type: “post”,
data: serializedData
});

我在应用程序中有以下标志,但我没有使用跨域(所有呼叫都使用相同的IP)。

 $(document).bind("mobileinit", function() {
                $.support.cors=true;
                $.mobile.allowCrossDomainPages = true;
                $.mobile.pushStateEnabled = false;
                $.mobile.touchOverflowEnabled = false;
                $.mobile.defaultPageTransition = 'slide';
                $.mobile.defaultDialogTransition = 'pop';
                $.mobile.transitionFallbacks.slide = 'none';
                $.mobile.transitionFallbacks.pop = 'none';
                $.mobile.buttonMarkup.hoverDelay = 0;
                $.mobile.phonegapNavigationEnabled = true;
            });

我在我使用的表单中设置了data-ajax=“false”

另外,在点击页面刷新后没有采取任何操作后,我必须删除Windows Phone 8的event.preventDefault();

我想再次声明,我的代码在Android和iOS中完美运行(只添加了跨域标志)。但是在Windows Phone 8中,我无法对同一台服务器进行第二次ajax调用。

我希望我能在你的帮助下解决问题,任何领导都会非常感激。感谢。

3 个答案:

答案 0 :(得分:1)

这可能与缓存问题有关 - 尝试解决此问题,请尝试在序列化数据中添加其他随机值。你可以参考这个

Prevent browser caching of jQuery AJAX call result

我有一个类似的ajax调用问题,这个随机变量解决了这个问题

答案 1 :(得分:0)

我必须从Windows Phone 8的Internet Explorer启用Cookie来解决我的问题。希望这有助于解决某人的挫败感。

答案 2 :(得分:-1)

我有同样的问题。我禁用缓存并解决问题:

request = $.ajax({ url: "http://X.X.X.X/Servlet/Login",
                   type: 'post',
                   data: serializedData,
                   cache: false
                 });