原因是:$.ajax()的success和error属性必须是匿名函数,不可以是调用普通函数。
造成这个问题的原因是js里面,执行匿名函数和普通函数的差别。匿名函数例如fn(){}需要加()才运行,而普通函数fnName(),只要解析到这一行,便会运行函数。
代码示范如下
错误示范
$.ajax({
type:'post',
url:'./weather.php',
//发送城市编码
data:{cityId:101010100},
//服务器返回的数据类型
dataType:'json',
//异步
async:true,
//成功callback
success:success_call_back(),//js解析到这一行会直接运行普通函数,输出'成功'
//失败callback
error:error_call_back()//js解析到这一行会直接运行普通函数,输出'失败'
});
function success_call_back(){
console.log('成功');
};
function error_call_back(){
console.log('失败')
};
正确示范
$.ajax({
type:'post',
url:'./weather.php',
//发送城市编码
data:{cityId:101010100},
//服务器返回的数据类型
dataType:'json',
//异步
async:true,
//成功callback
success:function(){
console.log('成功');
},//js解析到这一行不会直接运行匿名函数,需要调用
//失败callback
error:function(){
console.log('失败');
}//js解析到这一行不会直接运行匿名函数,需要调用
});