最近在使用Vue做項(xiàng)目開(kāi)發(fā)時(shí),遇到了一個(gè)奇怪的問(wèn)題,就是使用$.ajax請(qǐng)求數(shù)據(jù)時(shí),總是返回失敗。在重復(fù)檢查了代碼之后,發(fā)現(xiàn)這個(gè)問(wèn)題并不是代碼本身的問(wèn)題,而是Vue默認(rèn)的異步處理機(jī)制和$.ajax請(qǐng)求方式的兼容性問(wèn)題。具體的原因是:
$.ajax({ type: "GET", url: "xxx", success: function(data) { // 成功 }, error: function() { // 失敗 } });
$.ajax是jQuery中的一個(gè)異步請(qǐng)求方法,在Vue項(xiàng)目中也可以通過(guò)引入jQuery來(lái)使用該方法。然而,在Vue項(xiàng)目中,所有異步請(qǐng)求都應(yīng)該使用Vue提供的axios或vue-resource等工具來(lái)完成。而使用這些工具,請(qǐng)求方式和參數(shù)設(shè)置與$.ajax并不相同,因此在使用$.ajax時(shí),需要手動(dòng)設(shè)置Vue的異步處理方式:
// Vue異步請(qǐng)求方式的設(shè)置 Vue.http.options.emulateJSON = true; Vue.http.options.emulateHTTP = true; // 使用Vue提供的請(qǐng)求方式 this.$http.get('xxx').then(function(response) { // 成功 }, function(response) { // 失敗 });
在設(shè)置了Vue的異步請(qǐng)求方式后,再使用$.ajax請(qǐng)求數(shù)據(jù),就能夠正常地返回?cái)?shù)據(jù)了。當(dāng)然,由于Vue提供了更加強(qiáng)大的異步請(qǐng)求工具,在實(shí)際開(kāi)發(fā)中建議使用Vue提供的工具完成異步請(qǐng)求。