ホームページ > 記事 > ウェブフロントエンド > ajax での WeChat JSSDK が別のページをリクエストすることに問題はありますか?
ここで、Ajax が異なるページをリクエストする WeChat JSSDK の問題に関する記事を共有します。これは非常に参考になるので、皆さんのお役に立てれば幸いです。
問題のシナリオ:
Bluetooth プリンターを使用して印刷する必要があるフォーム コンテンツがページ A にあり、フォーム情報を入力し、処理のために Ajax リクエストを通じてファイル B (PHP) に送信します。フォームは正常にジャンプします。ページ B に移動すると、ページ B にデータを処理するための PHP に加えて、JSSDK 部分である JS コードも含まれているため、それを印刷できます。ただし、ajax リクエストで送信すると応答がなく、wx.ready と wx.config を除くすべての jssdk が実行できません。 (ファイル A.B の両方に wx.config と wx.ready 構成があります)
たとえば、データ送信用のパラメーター:
wx.invoke('sendDataToWXDevice',data,function(res){ //微信提供的接口,只有这么一个回调函数,如果通过ajax请求,则无法进入回调函数 if(res.err_msg=='sendDataToWXDevice:ok') { alert("打印成功"); window.history.go(-1); } else { alert("打印失败"); } });
したがって、PHP ファイルをリクエストすると、返されるデータには次のものが含まれると推測しました。ページ B の JS コード部分、つまりページ A には wx.config と wx.ready があり、ページ B によって返されるコンテンツにもこれら 2 つのインターフェイスがあります。この問題を解決するために、
をすべて配置します。ページBのWeChatインターフェイスを削除します。フォームの処理後に送信する必要があるコンテンツのみが入力に保存されます。
//返回 处理后的数据 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.'"/ >'; ?>
元のジャンプ ページの印刷は、非同期リクエストの印刷に変更されます。実際、B ファイルは、A から渡されたデータを返すことのみを担当します。 B に変換され、暗号化によって処理されるため、B ファイル内の HTML と JS の混合コードをすべて削除する必要があります。これは、ハードウェア SDK のニーズに関係するため、beta:true 属性が構成構成に含まれているかどうかです。 、インターフェイス リストのパラメーターも入力されているかどうか。使用されるハードウェア SDK インターフェイス
当時、私の考えは正しいと思いました。しかし、document.writeを使用して、openWXDeviceLib、sendDataToWXDeviceなどを含むwx.invokeのコールバック関数に返された結果を書き留めるたびに、wx.invoke後の出力が毎回実行されるわけではないことがすぐにわかり、私のオリジナルページのコンテンツもクリアされました。この時点ではこの問題に気づいていなかったので、呼び出す前にページ B から返されたデータを出力するまでテストを続けました (上記の document.write コンテンツは、リクエストが成功した後の成功コールバック関数です)。 )出力)、invokeメソッドを実行したときに送信したいデータが未定義になっていることに気づき、突然ページの元のコンテンツがクリアされていることに気づきました(以前はBにジャンプしていたため、ページが印刷されました、なので空白でした、~~、慣れてきて変化に気づきませんでした) その後、アラート出力に切り替えたところ、つまり、ajax でカプセル化されたコールバック関数で正常に印刷できました。 JQUERY、 document.write を使用して出力すると、ページのコンテンツがリセットされます (出力に document.write を使用する理由は、前のテストの特定の段階で、元々デバッグとして使用されていた構成がアラート ウィンドウを通じて情報をポップアップ表示したためです。しかし、なぜ document.write を使用したのかわかりません。フォームはページに書かれています。そのとき何が起こったのか忘れてしまったので、このエラーが発生しましたが、JQ のこの問題についてはまだ知っています
: JQuery の ajax 成功コールバック document.write を使用して関数のコンテンツを出力すると、ページのコンテンツがリセットされます。興味があれば、他のコールバック関数を確認してください。
上記は私があなたのためにまとめたものです。
関連記事:
less、sass、css スタイルを Vue-cli 単一ファイルコンポーネントに導入するさまざまな方法についての簡単な説明
vue-cli で作成されたプロジェクトのローダー問題を解決する
vueでモックアップを書くJianshuのカルーセルのサンプルコード
以上がajax での WeChat JSSDK が別のページをリクエストすることに問題はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。