クロスドメインのajaxリクエストを処理できました。私が今問題を抱えているのは、これが最初の投稿時には動作しますが、ページリフレッシュなしのそれ以降の投稿では、ブラウザのドメインセキュリティチェックが無効になります。クロスドメインajaxリクエスト - 再提出時のXDセキュリティエラー
私のローカルマシンには2つのドメインがあります。 'www.webservice.dev'と 'www.consume.dev'です。
私はいくつかのjsをwebserviceでホストされているように挿入します。
<script type="text/javascript">
$(function(){
var $scrpt = $('<script />');
$scrpt.attr({
'type' : 'text/javascript',
'src':'http://www.webservice.dev/_assets/script/processEvent.js'
});
$('head').append($scrpt);
});
</script>
このスクリプトは含まれています
$(function() {
var $scrpt = $('<script />');
$scrpt.attr({
'type' : 'text/javascript',
'src' : 'http://www.webservice.dev/_assets/script/jquery/plugins/jquery.form/jquery.form.js'
});
$('head').append($scrpt);
$('<iframe />')
.attr({
'id' : 'eventFormTarget',
'name' : 'eventFormTarget'
})
.css({
'width' : '1px',
'height' : '1px',
'position' : 'absolute',
'left' : '-9999px',
'top' : '-9999px'
})
.prependTo('body');
$('#event-form').bind('submit', function(){
$(this).ajaxSubmit({
url : 'http://www.webservice.dev/webservices.php',
type : 'POST',
dataType : 'html',
data : {
ajax : 'true',
webservice : 'processEvent'
},
error : function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR, textStatus, errorThrown);
/*
* try{ $('#event-form').trigger('submit'); }catch(e){
* console.log(e); };
*/
},
complete : function(){
},
iframeTarget : '#eventFormTarget',
iframe : true
});
return false;
});
});
は今、うまくいけば、あなたは、私がページにIFRAMEを追加し、魔法を実行するためにjqueryのフォームプラグインを使用しtehのスクリプトから表示されます。投稿がiframe経由で処理されるので、ajaxSubmitは処理するレスポンスを取得しません - 他の場所で処理します...
しかし、エラー応答は利用可能です。
フォームの最初の送信時にエラーが検出されず、webservice.devで処理コードの結果を確認できます。別の要求が送信されるとすぐにエラーイベントは、クロームコンソール(かなり似た放火魔)に次のようにyeildingトリガーされます。
Unsafe JavaScript attempt to access frame with URL http://www.nmssys.dev/webservices.php from frame with URL http://dev.dev/. Domains, protocols and ports must match. jquery.form.js:904
[jquery.form] Server abort: TypeError: Cannot read property 'readyState' of undefined (TypeError)
Unsafe JavaScript attempt to access frame with URL http://www.nmssys.dev/webservices.php from frame with URL http://dev.dev/. Domains, protocols and ports must match. jquery.form.js:904
[jquery.form] aborting upload... aborted
Object "aborted" "server abort"
あなたは私のコードに注意して、私はエラーをカテーテル検査し、さらに提出をトリガしてみてください。これは成功しますが、結果は異なります。ファイアフォックスではさらに1回の提出が成功すると思われるが、クロムはさらに3〜5回の提出を行うことができる。
私はこれらすべてのシャナニガンを防止する解決策が好きです。何かをiframeを削除して読んだり、またはajaxsubmitバインディングをリフレッシュするようにしてください...
感謝の気持ちでお待ちしております。