JavaScript
Ajax
jQuery實作ajax的方法
$.ajax({ url: 'api/imgData.json', dataType: 'json' }) .always(function(obj) { console.log(obj); });
$.getJSON('api/imgData.json', {}, function(json, textStatus) { console.log(json); });
多個ajax的處理方式
// 三個ajax操作都結束以後,才執行then方法指定的 doneCallbacks 函式 var ajax1 = $.get("main/func1/"); var ajax2 = $.post("main/func2/","condition"); var ajax3 = $.get("main/func3/"); var doneCallbacks = function(res1,res2,res3){ console.log('ajax1:',res1) console.log('ajax2:',res2) console.log('ajax3:',res3) $('body').append('<p>三個ajax都執行完了!</p>') } var failCallbacks = function() { console.log("ajax執行有問題!"); } $.when(ajax1,ajax2,ajax3) .then(doneCallbacks, failCallbacks);
function ajax1(){ var def = $.Deferred() $.ajax({ url: 'http://www.yacoding.com/jquery.php?ran='+Math.random(), dataType: 'json' }).then(function(){ $('body').append('<p>ajax1 success</p>') def.resolve() },function(){ $('body').append('<p>ajax1 fail</p>') def.reject() }) return def.promise() } function ajax2(){ var def = $.Deferred() $.ajax({ url: './api/test1.json?ran='+Math.random(), dataType: 'json' }).then(function(){ $('body').append('<p>ajax2 success</p>') def.resolve() },function(){ $('body').append('<p>ajax2 fail</p>') def.reject() }) return def.promise() } function ajax3(){ var def = $.Deferred() $.ajax({ url: './api/test2.json?ran='+Math.random(), dataType: 'json' }).then(function(){ $('body').append('<p>ajax3 success</p>') def.resolve() },function(){ $('body').append('<p>ajax3 fail</p>') def.reject() }) return def.promise() } ajax1().then(ajax2).then(ajax3).then(function(){ $('body').append('<p>三個ajax都執行完了!</p>') },function(){ $('body').append('<p>ajax執行有問題!</p>') })
建議讓ajax結構單純化,將大量處理畫面的邏輯用函式獨立出來。
$.ajax({ url: './api/imgData.json', dataType: 'json' }) .done(function(res) { init(res.list); }) function init(list){ $.each(list, function(index, value) { $("<li></li>").append($("<img>") .attr('src',value.src)).appendTo($('.imgList')) }); }
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up