1. Deskripsi Masalah:
Janda.location = function () didefinisikan dalam JS. Ketika halaman ditutup, fungsi logout () tidak dieksekusi.
window.onunload = function () {logout ();} function logout (reqParam, callback) {var userManageServiceUrl = "http: //" + getserveraddr () + "/axis2/services/useranManageService"; var urllist = []; var url = windok.location.href; urllist [1]; reqParam.SessionId = sessionId; var pl = new SoapClientParameters (); var reqParamstr = json.stringify (reqParam); pl.add ("reqparam", reqparamstr); soapclient.invoke (userManageServiceUrl, "logiout", loqparamstr); soapclient.invoke (userManageServiceUrl, "" logiout ", pl, fales);2. Penyebab masalah:
Metode soapclient.invoke () dipanggil dalam logout (), dengan parameter true, yang berarti bahwa front-end dan server berkomunikasi dengan cara yang tidak sinkron. Artinya, front-end belum menerima respons dari sisi server, dan pernyataan berikut telah dieksekusi. Dalam masalah ini, front-end telah menutup halaman sebelum respons server dieksekusi, sehingga dimanifestasikan sebagai logout () belum dieksekusi.
3. Solusi:
Ubah metode komunikasi antara front-end dan server menjadi sinkron, yaitu mengubah benar dalam metode soapclient.invoke () menjadi false, dan masalahnya telah dipecahkan.