0

我有一个主要使用 JQuery Mobile 的移动应用程序。我有一个使用 POST 的 ajax 函数,当我触发点击事件时,我似乎无法获得任何影响 UI 的东西。我试过设置

$('#cover').show(); 

作为函数中的第一件事,我会做一些基本的事情,比如 document.getElementById('user') 等来设置一些变量并检查输入,但只要有 ajax 函数,它就不会显示 div 甚至JQ Mobile 的微调器。除非我调试并单步执行代码,否则微调器和 div 显示得很好。我尝试了 setTimeout 并将其放在 ajax 调用的 beforeSend 区域中。否则一切正常。它似乎与 GET 一起工作得更好我不确定这是否与它有关。

$.ajax({                
    cache: false,
    type: "POST",
    async: false,
    url: urlString,
    data: jsonstring,
    contentType: "application/json",
    dataType: "json",
    success: function (data) {
        JSONobj = JSON.parse(data);         
    },
    beforeSend: function(xhr){
          //console.log('BeforeSend');
    },
    complete: function (xhr) {
        //console.log('Complete');
    },
    error: function (xhr, status, error) {
      console.log(error);
    }
});
4

2 回答 2

1

您可以使用 Ajax Global 处理程序来处理此问题:

$(document). 
    .ajaxStart(function(){
        $('#cover').show();
    })
    .ajaxStop(function(){
        $('#cover').hide();
    });

这样您就不必担心在单个 Ajax 调用上显示/隐藏覆盖。

于 2012-07-12T09:32:47.473 回答
0

尝试这个

$("#someButton").click(function(e){

   e.preventDefault() //if you want to prevent default action

    $('#cover').fadeIn(100,function(){

       $.ajax({     
              url: "someurl",
              data: "Somedata",
              contentType: "application/json",
              dataType: "json",        
              },
              success: function (data) {
                   JSONobj = JSON.parse(data);
                   $('#cover').fadeOut(100);        
              },
               complete: function (xhr) {
                   $('#cover').fadeOut(100);
              }
       });  

    }); 

});
于 2012-07-11T19:59:36.983 回答