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 useranManageServiceUrl = "http: //" + getserveraddr () + "/axis2/services/useranManageService"; var urllist = []; var url = window.location.href; urllist = url.split ("?"); var sessionId = urllist [1]; reqParam.SessionId = sessionId; var pl = soapclientparameters baru (); var reqparamstr = json.stringify (reqParam); pl.add ("reqparam", reqparamstr); SOAPCLIENT.Invoke (UserManageserviceUrl, "Logout", PL, False, Callback); }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.