Javascript 如何在另一个函数中使用ajax函数响应

Javascript 如何在另一个函数中使用ajax函数响应,javascript,jquery,ajax,Javascript,Jquery,Ajax,以下是两个javascript函数: function testAjax() { $word = $('#word').val(); return $.ajax({ url: "http://test.movies.9pstudio.com:8080/wordchain/wordsearch", type: 'POST', data: { word: word }, }); } fu

以下是两个javascript函数:

function testAjax() {
    $word = $('#word').val();
    return $.ajax({
        url: "http://test.movies.9pstudio.com:8080/wordchain/wordsearch",
        type: 'POST',
        data: {
            word: word
        },
    });
}

function validation() {
    var reply = testAjax();
    var x = document.getElementById("word").value;
    alert(reply);
    if (reply.equals("word not exist")) {
        document.getElementById("error").innerHTML = reply;
    } else {
        document.getElementById("word1").innerHTML = reply;
        send.push(result);
    }
    document.getElementById("word").value = "";
}

使用jqueryajax回调

function validation() {
    var reply = testAjax();
    reply.done(function(data) {
        var x = document.getElementById("word").value;
        alert(data);
        ...
    })
}

我认为您正在尝试使用
success
回调函数,如下所示:

function testAjax() {
    //this is not php so you need to declare a variable using "var" keyword
    var word = $('#word').val();  
    $.ajax({
        url: "http://test.movies.9pstudio.com:8080/wordchain/wordsearch",
        type: 'POST',
        data: {
            word: word
        },
        success: validation.bind(this)
    });
}

function validation(response) {
    var reply = response;//testAjax();
    var x = document.getElementById("word").value;
    alert(reply);
    if (reply === "word not exist") {
        document.getElementById("error").innerHTML = reply;
    } else {
        document.getElementById("word1").innerHTML = reply;
        //send.push(result);  //where did you declare send variable?
    }
    document.getElementById("word").value = "";
}

您应该实现所述的
success
complete
处理程序

例如:

function testAjax() {
  word = $('#word').val();
  return $.ajax({
    url: "http://test.movies.9pstudio.com:8080/wordchain/wordsearch",
    type: 'POST',
    data: {
      word: word
    },
    success: function(data){
      // Do something with response data here
    }
  });
}  

在第一个函数中使用回调参数

function testAjax(callback) {
  $.ajax({
    url:...
    success: function(data) {
      callback(data); 
    }
  });
}
通用功能:

function ajax(url, data, type, successCallBack, failureCallBack) {
  var that = this;
  // ajax request to server
  $.ajax({
    url: url,
    type: type,
    data: data
  }).done(function(data) {  
    successCallBack(data);
  }).fail(function(data) {
    failureCallBack(data);
  });
};
您可以使用此通用函数调用应用程序中的任意位置,如下所示:

function textAjax(){
  ajax('test.json','GET',{'word':word},function(reply){
  var x = document.getElementById("word").value;
  alert(reply);
  if (reply.equals("word not exist")) {
      document.getElementById("error").innerHTML = reply;
  } else {
      document.getElementById("word1").innerHTML = reply;
      send.push(result);
  }
  document.getElementById("word").value = "";
},function(data){
// write code for failure handler
});


如果您希望任何人帮助您,请格式化您的代码!为什么
$word
被初始化但从未使用过?@DhavalMarthak$word被作为post数据发送。@ElmoVanKielmo这就是为什么我指出,这只是
word
而不是
$word
@DhavalMarthak我认为这只是一个打字错误。好的。但我们不知道jQuery OP使用的是哪个版本。它将适用于最近的项目。但根据我的经验,旧的库版本在大型项目中存在很长时间。
完成、失败、总是
是不推荐的
成功、错误、完成
方法的替代方法。我非常清楚这一点。我只是说这段代码在jQuery>=1.5中工作,我们不知道使用的是哪个版本的jQuery OP。它将适用于最近的项目。但根据我的经验,旧的图书馆版本在大型项目中长期存在。剩下的只是我个人对jQuery特性的看法:我不喜欢这种意大利面语法,从OOP的角度看,这看起来像是
done()
返回带有
fail()方法的对象。对我来说,这比旧的基于dict的语法更奇怪、更难理解。但我知道这是他们(jQuery开发人员)的设计,从这个角度来看,您的代码还可以。感谢您欣赏:)@PrakashBhagat,当我调用我的服务url(“)事实上,您可以使用任何您想要的url,在您的情况下,它给出了一个错误是未捕获的引用错误:textAjax未定义我使用一个按钮调用函数,在单击按钮testAjax()之后已执行…但仍不工作…@SatyaPandu请检查控制台中是否有任何错误。@SatyaPandu将控制台保持在chrome打开状态,并在两个函数中保持断点,然后再次执行单击操作。错误为未捕获引用错误:未定义textAjax