JavaScript和作用域问题
我在用jquery调用ajax请求时遇到了一个问题。 我这样做的顺序是:JavaScript和作用域问题,javascript,ajax,button,scope,click,Javascript,Ajax,Button,Scope,Click,我在用jquery调用ajax请求时遇到了一个问题。 我这样做的顺序是: 点击按钮 做ajax帖子吗 当ajax请求完成时,我调用一个超出范围的函数 出于某种原因,我认为这与我在点击回调中加载函数超出范围有关。但是我甚至没有看到console.log消息。但我确实看到了ajax调用 有什么想法吗?也许我做得不对 以下是与我所尝试的类似的原型代码: $(document).ready(function(){ $('#button').on('click',function(evt
$(document).ready(function(){
$('#button').on('click',function(evt){
var data = {};
ajax('index.html', data).done(function(){
console.log('Fire Please'); // this does not fire after the ajax call!!!
load(); // this does not fire after the ajax call!!!
});
});
function load(){
// do another ajax call and add to the dom
}
function ajax(url, data){
return $.ajax({
url: url,
type: 'post',
dataType: 'json',
data: data
});
}
});
这是我试图使用的实际代码
$(文档).ready(函数(){
//将onclick事件添加到添加单元按钮
addUnitButt.on('click',函数(evt){
风险值数据={
id:id,
部门号:部门号val(),
部门:部门val()
};
evt.preventDefault();
部门val(“”);
部门编号val(“”);
$(this.prop('disabled',true);
ajax('index.html',data).done(函数(){
加载();
});
});
函数加载(){
风险值数据={
身份证号码:575
};
//显示加载
showLoading();
//重置表dom
$(“#listTable”).find(“tr:gt(0)”.remove();
//执行列表数据的初始加载
ajax('index.html',数据)
.完成(功能(单位){
var数据=toJSONObject(单位);
对于(var x=0;x
}))
提前谢谢 必须调用.always()
确保您的服务器响应具有正确的标题,如Content-Type
。并且响应主体是有效的JSON。。必须调用always()
确保您的服务器响应具有正确的标题,如
Content-Type
。并且响应主体是有效的JSON。可能index.html的代码是无效的JSON可能index.html的代码是无效的JSON范围很好。XHR请求是否显示成功响应?是的。我可以看到电话接通并返回200。实际上,我可以通过刷新页面看到添加的数据,记录就在那里,但只有在我刷新页面之后。就像刷新dom的load函数没有启动一样,代码乍一看很好。我注意到您没有发布任何数据,但您提到数据正在保存,这是您用于测试的确切代码还是变体?(因为这个变量可能有问题)这个代码示例很好,如果ajax如您所说的那样成功,那么您可以将代码发布到出现问题的地方吗?我正在学习:$.ajax不会因为数据类型:'JSON'
,而将响应(index.html)作为JSON字符串进行评估,这不会失败吗?范围很好。XHR请求是否显示成功响应?是的。我可以看到电话接通并返回200。实际上,我可以通过刷新页面看到添加的数据,记录就在那里,但只有在我刷新页面之后。就像刷新dom的load函数没有启动一样,代码乍一看很好。我注意到您没有发布任何数据,但您提到数据正在保存,这是您用于测试的确切代码还是变体?(因为这个变体可能会有问题)如果ajax如您所说成功,那么这个代码示例就可以了,那么您可以将代码发布到出现问题的地方吗?我正在学习:$.ajax不会因为数据类型:“JSON”
,而将响应(index.html)作为JSON字符串进行评估吗,,这不会失败吗?很高兴得到最好的答案很高兴得到最好的答案
// add onclick event to the Add Unit Button
addUnitButt.on('click', function(evt){
var data = {
id: id,
dept_no: dept_no.val(),
dept: dept.val()
};
evt.preventDefault();
dept.val('');
dept_no.val('');
$(this).prop('disabled', true);
ajax('index.html', data).done(function(){
load();
});
});
function load(){
var data = {
id: 575
};
// show loading
showLoading();
// reset the table dom
$("#listTable").find("tr:gt(0)").remove();
// do initial load of the list data
ajax('index.html', data)
.done(function(units){
var data = toJSONObject(units);
for(var x = 0; x < data.length; x++){
if((x & 1) == 0){
addRow(data[x], data.length, 'odd');
}else{
addRow(data[x], data.length, 'even');
}
}
// hide loading
hideLoading();
});
}
// ajax function to call for data
function ajax(url, data){
return $.ajax({
type: 'POST',
data: data,
dataType: 'json',
url: url
});
}