Javascript 如何在另一个函数中使用ajax函数响应
以下是两个javascript函数: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
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