PhoneGap Jquery Mobile Ajax 回调在数据原生菜单 = "false" 时不起作用



我有一个在Jquery Mobile框架上运行的phonegap应用程序。我有许多组合框(选择),它们在更改时触发 ajax 查询。使用本机菜单时,代码工作正常,但是当我切换到数据本机菜单="false"时,代码无法执行回调,这发生在我的 android 设备上,而不是在模拟器或浏览器上。由于某种原因,我无法让我的设备在调试模式下工作。

代码到达 on change 事件,它到达 $.ajax 中的 beforeSend 函数,但它永远不会完成/错误。我什至尝试添加一个隐藏字段并使用它来触发事件,因此它肯定在正确的页面上,而不是卡在弹出窗口中。

I'll try and make a jsfiddle.
$(document).delegate('#p1', 'pageshow', function () {
        $("#aS").change(function(){
            alert('going to change');
            getAjax('',{},function(){
                alert('got callback');
            });
        });
    });
function getAjax(request,datain,callback){
    $.mobile.showPageLoadingMsg();  
    $.ajax({
        type: "GET",
        url: 'http://open.live.bbc.co.uk/wurfldemi/network.jsonp?callback=?'+request,
        //  async: false,
        data: datain,
        beforeSend: function(x) {
            if(x && x.overrideMimeType) {
                x.overrideMimeType("application/j-son;charset=UTF-8");
            }
        },
        dataType: "jsonp",
        success: function(data){
            $.mobile.hidePageLoadingMsg();  
                callback(data);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            $.mobile.hidePageLoadingMsg();
            alert(xhr.status);
            alert(thrownError);
        }
    });
    return false;
}                        

编辑

http://jsfiddle.net/4KVNc/

重申一下,这不是问题(据我所知),将事件处理程序添加到选择的 on change 事件,但请求它是自身或回调。

使用数据原生菜单="true"时,该页面工作正常。我只在小提琴中使用了'$(document).ready(function(){',因为我不知道如何让它以任何其他方式工作,我不在真正的应用程序中使用它。

编辑我已经在 5 台设备上尝试过这个,它似乎适用于 4.2、4.1、2.5,但不适用于 3。

这是一个固定的jsFiddle: http://jsfiddle.net/pYYAu/

像这样使用它:

$(document).on('pagebeforeshow', '#p1', function(){   
    $(document).on('change', '#aS', function(event, ui){          
            alert('going to change');
            getAjax('',{},function(){
                alert('got callback');
            });
        });
    });
        .
        .
        .

最新更新