十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
問題場(chǎng)景:
創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括荔城網(wǎng)站建設(shè)、荔城網(wǎng)站制作、荔城網(wǎng)頁(yè)制作以及荔城網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,荔城網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到荔城省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
我在A頁(yè)面有一個(gè)表單內(nèi)容需要使用藍(lán)牙打印機(jī)打印,填完表單信息,并通過ajax請(qǐng)求發(fā)送到 B文件(PHP)中處理信息,正常通過form表單跳轉(zhuǎn)到B頁(yè)面后,是可以打印出來的,因?yàn)锽頁(yè)面中除了處理 數(shù)據(jù)的PHP之外還混合了 JS代碼,也就是JSSDK部分。然而通過ajax請(qǐng)求發(fā)送過去,則無響應(yīng),所有jssdk除了wx.ready和wx.config之外都無法執(zhí)行。(A.B兩個(gè)文件都有wx.config,wx.ready配置)
比如發(fā)送數(shù)據(jù)的參數(shù):
wx.invoke('sendDataToWXDevice',data,function(res){ //微信提供的接口,只有這么一個(gè)回調(diào)函數(shù),如果通過ajax請(qǐng)求,則無法進(jìn)入回調(diào)函數(shù) if(res.err_msg=='sendDataToWXDevice:ok') { alert("打印成功"); window.history.go(-1); } else { alert("打印失敗"); } });
于是我就猜測(cè),通過請(qǐng)求PHP文件,返回的數(shù)據(jù)包含了我的B頁(yè)面JS代碼部分,也就是說,A頁(yè)面有wx.config和wx.ready,B頁(yè)面返回的內(nèi)容也有這兩個(gè)接口,為了排除這個(gè)問題,
我把B頁(yè)面的所有微信接口全部去掉了。只剩下處理完表單需要發(fā)送的內(nèi)容保存在一個(gè)input中。
//返回 處理后的數(shù)據(jù) echo ''; echo ''; ?>
由原本跳轉(zhuǎn)頁(yè)面打印改成異步請(qǐng)求打印,實(shí)際上,從微信發(fā)送數(shù)據(jù)給設(shè)備還是在A頁(yè)面執(zhí)行,B文件只是負(fù)責(zé)返回由A傳給B并通過加密處理的數(shù)據(jù),所以,刪掉B文件中所有混寫的html和JS代碼,其中要注意的是config配置中是否包含 beta:true屬性,因?yàn)樯婕暗接布DK需要,并且接口列表參數(shù)中是否也填寫上了要用到的硬件SDK接口
我當(dāng)時(shí)覺得我的想法是正確的。但是我每次在wx.invoke包括openWXDeviceLib,sendDataToWXDevice等的 回調(diào)函數(shù)中用document.write寫下返回的結(jié)果,但是我很快發(fā)現(xiàn)每次wx.invoke后面的輸出都不執(zhí)行了,而且我原本頁(yè)面的內(nèi)容也被清空了,此時(shí)我還沒意識(shí)到這個(gè)問題,還是不斷測(cè)試,直到我在invoke之前輸出了由B頁(yè)面返回的數(shù)據(jù)(以上document.write內(nèi)容都是我在請(qǐng)求成功后的success回調(diào)函數(shù)輸出的),我才意識(shí)到,我要發(fā)送的數(shù)據(jù),在我執(zhí)行invoke方法的時(shí)候,已經(jīng)變成了undefind,我才恍然發(fā)現(xiàn),我的頁(yè)面原本內(nèi)容被清空了(因?yàn)橹笆翘D(zhuǎn)到B頁(yè)面打印,所以本身就是一片空白,~ ~,習(xí)慣了,沒發(fā)現(xiàn)變化),后來我改用alert輸出,就可以正常打印了,也就是說 JQUERY的ajax封裝的回調(diào)函數(shù)中,用document.write輸出,會(huì)重置頁(yè)面內(nèi)容(我之所以用document.write來輸出的原因是,之前測(cè)試某個(gè)階段中,原本作為調(diào)試的config是通過alert窗口彈出信息的,但是不知道為何他卻以document.write的形式寫在了頁(yè)面上。我現(xiàn)在已經(jīng)忘了當(dāng)時(shí)是什么情況,所以才會(huì)導(dǎo)致這個(gè)錯(cuò)誤,不過也算是知道了JQ的這個(gè)問題)
謹(jǐn)記:JQuery的ajax的success回調(diào)函數(shù)中用document.write輸出內(nèi)容會(huì)重置頁(yè)面內(nèi)容,至于其他回調(diào)函數(shù)會(huì)不會(huì)有興趣可以自己看一下。
以上這篇淺談ajax請(qǐng)求不同頁(yè)面的微信JSSDK問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。