Ajaxでphpを呼び出して~の処理でハマった
- PCやAndroidだと動くのに、iOSとかiPhoneだと動いたり動かなかったりする不具合。
- 特に最初に開いたときは動いて、2回目以降はエラーが出るとき。
- エラー戻り値は「undefined」とか「0」
- サイトはhttps
解決方法
async:falseとbeforeSend:を入れたらOKでした。
URLの指定も//からにするのもポイント。httpとかhttpsとか入れないほうがいい。
$.ajax({ async:false, type:'post', cache:false, url: '//~~~/~~~.php', data:{ send_data:in_send_data, flg:0 }, beforeSend:function(xhr){ if (window.navigator.userAgent.toLowerCase().indexOf('safari') != -1) xhr.setRequestHeader("If-Modified-Since", new Date().toUTCString()); }, success: function(data){ alert("OK"); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("ERROR " + XMLHttpRequest.status + "-----" + textStatus + "------" + errorThrown.message + "---" + location.pathname); } });
参考までにエラーが出ていたソースはこんな感じ
$.ajax({ type:'post', cache:false, url: '//~~~/~~~.php', data:{ send_data:in_send_data, flg:0 }, success: function(data){ alert("OK"); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("ERROR " + XMLHttpRequest.status + "-----" + textStatus + "------" + errorThrown.message + "---" + location.pathname); } });
お客様を何日待たせてしまったんだよぉっ!(><)
どうか世界からsafariとIEが××されますように…(>人<)
コメント