淺談ajax請求不同頁面的微信JSSDK問題
問題場景:
我在A頁面有一個表單內(nèi)容需要使用藍(lán)牙打印機(jī)打印,填完表單信息,并通過ajax請求發(fā)送到 B文件(PHP)中處理信息,正常通過form表單跳轉(zhuǎn)到B頁面后,是可以打印出來的,因為B頁面中除了處理 數(shù)據(jù)的PHP之外還混合了 JS代碼,也就是JSSDK部分。然而通過ajax請求發(fā)送過去,則無響應(yīng),所有jssdk除了wx.ready和wx.config之外都無法執(zhí)行。(A.B兩個文件都有wx.config,wx.ready配置)
比如發(fā)送數(shù)據(jù)的參數(shù):
wx.invoke('sendDataToWXDevice',data,function(res){
//微信提供的接口,只有這么一個回調(diào)函數(shù),如果通過ajax請求,則無法進(jìn)入回調(diào)函數(shù)
if(res.err_msg=='sendDataToWXDevice:ok')
{
alert("打印成功");
window.history.go(-1);
}
else
{
alert("打印失敗");
}
});
于是我就猜測,通過請求PHP文件,返回的數(shù)據(jù)包含了我的B頁面JS代碼部分,也就是說,A頁面有wx.config和wx.ready,B頁面返回的內(nèi)容也有這兩個接口,為了排除這個問題,
我把B頁面的所有微信接口全部去掉了。只剩下處理完表單需要發(fā)送的內(nèi)容保存在一個input中。
//返回 處理后的數(shù)據(jù) echo '<input type = "hidden" name = "print_str" id = "print_str" value="'.$hex_str.'"/ >'; echo '<input type = "hidden" name = "device_id" id = "device_id" value="'.$device_ID.'"/ >'; ?>
由原本跳轉(zhuǎn)頁面打印改成異步請求打印,實際上,從微信發(fā)送數(shù)據(jù)給設(shè)備還是在A頁面執(zhí)行,B文件只是負(fù)責(zé)返回由A傳給B并通過加密處理的數(shù)據(jù),所以,刪掉B文件中所有混寫的html和JS代碼,其中要注意的是config配置中是否包含 beta:true屬性,因為涉及到硬件SDK需要,并且接口列表參數(shù)中是否也填寫上了要用到的硬件SDK接口
我當(dāng)時覺得我的想法是正確的。但是我每次在wx.invoke包括openWXDeviceLib,sendDataToWXDevice等的 回調(diào)函數(shù)中用document.write寫下返回的結(jié)果,但是我很快發(fā)現(xiàn)每次wx.invoke后面的輸出都不執(zhí)行了,而且我原本頁面的內(nèi)容也被清空了,此時我還沒意識到這個問題,還是不斷測試,直到我在invoke之前輸出了由B頁面返回的數(shù)據(jù)(以上document.write內(nèi)容都是我在請求成功后的success回調(diào)函數(shù)輸出的),我才意識到,我要發(fā)送的數(shù)據(jù),在我執(zhí)行invoke方法的時候,已經(jīng)變成了undefind,我才恍然發(fā)現(xiàn),我的頁面原本內(nèi)容被清空了(因為之前是跳轉(zhuǎn)到B頁面打印,所以本身就是一片空白,~ ~,習(xí)慣了,沒發(fā)現(xiàn)變化),后來我改用alert輸出,就可以正常打印了,也就是說 JQUERY的ajax封裝的回調(diào)函數(shù)中,用document.write輸出,會重置頁面內(nèi)容(我之所以用document.write來輸出的原因是,之前測試某個階段中,原本作為調(diào)試的config是通過alert窗口彈出信息的,但是不知道為何他卻以document.write的形式寫在了頁面上。我現(xiàn)在已經(jīng)忘了當(dāng)時是什么情況,所以才會導(dǎo)致這個錯誤,不過也算是知道了JQ的這個問題)
謹(jǐn)記:JQuery的ajax的success回調(diào)函數(shù)中用document.write輸出內(nèi)容會重置頁面內(nèi)容,至于其他回調(diào)函數(shù)會不會有興趣可以自己看一下。
以上這篇淺談ajax請求不同頁面的微信JSSDK問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JQuery擴(kuò)展插件Validate—4設(shè)置錯誤提示的樣式
JQuery擴(kuò)展插件Validate—4設(shè)置錯誤提示的樣式,使用Validate的朋友可以參考下。2011-09-09
DIY jquery plugin - tabs標(biāo)簽切換實現(xiàn)代碼
接觸jquery 2,3個月了,一直都未動手寫過插件。正好最近比較閑,就打算把一直看不順眼的項目中現(xiàn)有的tab改造一番(現(xiàn)有的tab未能做成一個控件,copy,past的代碼太多)。2010-12-12
jquery遍歷table的tr獲取td的值實現(xiàn)方法
下面小編就為大家?guī)硪黄猨query遍歷table的tr獲取td的值實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05

