如何回调用户定义函数和显示值

时间:2016-10-07 06:42:08

标签: jquery

大家好我每个人都有一个执行ajax请求的函数,结果将返回另一个函数但是当我调用该函数时它将返回未定义的值请帮助!



function getState(id)
{
    
    var StateJsonString = jQuery.parseJSON(id);
    var stateData;
    
    $.ajax({
        
        type: "POST",
        
        url: "phpFile/getStatenameVehiclePro.php",
       
        dataType: "json",
        
        data: { id:StateJsonString.state},
        
        success: function(stateFrom){
            
            stateData = stateFrom.data[0][1];
           
        },
        Fail: function(){
            
            alert("Cannot Loading State Name");
            
        },
        error: function(){
            
            alert("Cannot Loading State Name");
        }
        
    });
    
     return stateData;
}




2 个答案:

答案 0 :(得分:0)

async选项添加到false并返回ajax调用之外。

  • 设置async to false表示您调用的语句必须在函数中的下一个语句被调用之前完成。
  • 如果设置async: true,则该语句将开始执行,无论异步语句是否已完成,都将调用下一个语句。

实施例

function getState() {
    var result="";
    $.ajax({
      url:"URL",
      async: false,  
      success:function(data) {
         result = data; 
      }
   });
   return result;
}

<强>另外,

处理ajax请求

//Ajax function call
function getState() {
  return $.ajax({
      url: "URL"
  });
}

//Get ajax request
var promise = getState();

//Call on ajax success
promise.success(function (data) {
  //Do what you want
});

答案 1 :(得分:0)

使用Ajax时,A表示Asynchronous。您的代码中发生的事情是编译器到达您的ajax函数后,它会同时请求您的PHP页面。它也从同一个函数返回return stateData;

var stateData;未分配任何值。这就是为什么它会在您的ajax调用启动时返回undefined,并且浏览器不会等待您的ajax调用首先完成,并且它正在并行执行asynchronous功能。

您必须使用不推荐的async: false。但在你的情况下,这是一个有效的建议。

.ajax({            
        type: "POST",            
        url: "phpFile/getStatenameVehiclePro.php",           
        dataType: "json",
        async: false
 });