我刚刚创建了一个JQuery ajax函数来检索一些json-encoded数据PHP,这是我的代码:
文件名:bank.php
$('form').on('submit', function(){
var datatobesent = $(this).serialize();
$.ajax({
data: datatobesent,
url:'data.php',
type:'GET'
})
.done(function(data){
console.log(typeof(data));
});
return false;
})
Run Code Online (Sandbox Code Playgroud)
在data.php我写的
if(isset($_GET)){
$data = $_GET;
echo json_encode($data);
header("Content-type:application/json");
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我删除的行header("Content-type:application/json");中data.php的console.log告诉数据返回的类型ajax是string.
而当我dataType :在ajax函数内部添加json`` 时bank.php,类型变为object
那header("Content-type:application/json");实际上是什么功能呢?
我希望在调用第二个“then”时不执行第三个“then”。然而,即使承诺被拒绝(第二个“then”被调用)并且代码返回“rejected”然后“undefined”,它仍然调用第三个“then”。如何不运行第三个“then”,这样“undefined”就不会出现?
var FirstPromise = function() {
let promiseme = new Promise(function(res, rej) {
if ('a' == 'b') {
res(1);
} else {
rej('rejected');
}
})
return promiseme;
};
function succeddcallback(msg) {
return msg * 2;
}
function errorcallback(msg) {
console.log(msg);
}
FirstPromise()
.then(succeddcallback, null)
.then(null, errorcallback)
.then(function(succedded) {
console.log(succedded);
}, function(failed) {
console.log(failed);
})
Run Code Online (Sandbox Code Playgroud)