>웹 프론트엔드 >JS 튜토리얼 >다른 페이지를 요청하는 ajax의 WeChat JSSDK에 어떤 문제가 있나요?

다른 페이지를 요청하는 ajax의 WeChat JSSDK에 어떤 문제가 있나요?

亚连
亚连원래의
2018-06-04 15:54:071720검색

이제 다양한 페이지를 요청하는 ajax의 WeChat JSSDK 문제에 대한 기사를 공유하겠습니다. 이는 좋은 참고 가치가 있으며 모든 사람에게 도움이 되기를 바랍니다.

문제 시나리오:

페이지 A에 Bluetooth 프린터를 사용하여 인쇄해야 하는 양식 콘텐츠가 있습니다. 양식 정보를 입력하고 처리를 위해 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 파일을 요청하여 반환된 내용은 다음과 같습니다. 데이터에는 My B 페이지 JS 코드 부분이 포함되어 있습니다. 즉, A 페이지에는 wx.config 및 wx.ready가 있고 B 페이지에서 반환된 콘텐츠에도 이 두 가지 인터페이스가 있습니다. B 페이지의 WeChat 인터페이스가 제거되었습니다. 양식 처리 후 전송해야 하는 내용만 입력에 저장됩니다.

//返回 处理后的数据
echo &#39;<input type = "hidden" name = "print_str" id = "print_str" value="&#39;.$hex_str.&#39;"/ >&#39;;
echo &#39;<input type = "hidden" name = "device_id" id = "device_id" value="&#39;.$device_ID.&#39;"/ >&#39;;
?>

원래 점프 페이지 인쇄가 비동기 요청 인쇄로 변경되었습니다. 실제로 WeChat에서 장치로의 데이터 전송은 여전히 ​​A 페이지에서 실행됩니다. B로 전송되어 암호화를 통해 처리되므로 B 파일에서 혼합된 html 및 JS 코드를 모두 삭제해야 합니다. 베타:true 속성은 하드웨어 SDK 요구 사항과 관련되므로 구성 구성에 포함되어 있는지 여부입니다. , 그리고 인터페이스 목록 매개변수도 채워져 있는지 여부. 사용된 하드웨어 SDK 인터페이스

당시에는 내 생각이 맞다고 생각했습니다. 하지만 document.write를 사용하여 openWXDeviceLib, sendDataToWXDevice 등을 포함하는 wx.invoke의 콜백 함수에 반환된 결과를 기록할 때마다 wx.invoke 이후의 출력이 매번 실행되지 않는다는 것을 곧 알게 됩니다. page 내용도 지워졌는데 이때는 이 문제를 인지하지 못했기 때문에 호출 전 B 페이지에서 반환된 데이터를 출력할 때까지 계속 테스트를 했습니다. (위 document.write 내용은 요청 성공 후 저의 성공 콜백 함수입니다. ) 출력), Invoke 메서드를 실행했을 때 내가 보내고자 했던 데이터가 Undefind 상태가 되었다는 것을 깨달았고, 갑자기 내 페이지의 원래 내용이 지워진 것을 발견했습니다(이전에 B로 점프했기 때문에 페이지가 인쇄되었습니다, 그래서 공백이었는데 ~~ 익숙해져서 아무런 변화도 느끼지 못했습니다.) 나중에 경고 출력으로 전환했는데, 즉, ajax로 캡슐화된 콜백 함수에서 정상적으로 인쇄할 수 있었습니다. JQUERY, 출력에 document.write를 사용하면 페이지 내용이 재설정됩니다(제가 출력에 document.write를 사용하는 이유는 이전 테스트의 특정 단계에서 원래 디버깅으로 사용된 구성이 경고 창을 통해 정보를 팝업시켰기 때문입니다. 그런데 왜 document.write를 사용했는지는 모르겠습니다. 폼이 페이지에 적혀 있어서 그때 무슨 일이 일어났는지 잊어버렸기 때문에 이런 에러가 발생했는데 JQ의 이 문제는 아직도 알고 있습니다

기억하세요: JQuery의 ajax 성공 콜백 document.write를 사용하여 함수의 콘텐츠를 출력하면 페이지 콘텐츠가 재설정됩니다. 관심이 있는 경우 다른 콜백 함수를 살펴볼 수 있습니다. 위 내용은 제가 여러분을 위해 정리한 내용입니다. 앞으로 도움이 되길 바랍니다.

관련 기사:

Vue-cli 단일 파일 구성 요소에 less, sass 및 css 스타일을 도입하는 다양한 방법에 대한 간단한 토론


vue-cli 생성 프로젝트의 로더 문제 해결


간단한 책 캐러셀 이미지를 위한 vue 샘플 코드로 모형 작성


위 내용은 다른 페이지를 요청하는 ajax의 WeChat JSSDK에 어떤 문제가 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.