2012-01-11 15 views
1

TRUEまたはFALSEメッセージのHTMLページを返す外部コントローラページを呼び出すログインフォームがあります。 jqueryのlibでAjaxのクロスドメイン呼び出しでHTMLレスポンスをインターセプトする方法

$("#login").click(function(){ 
$.ajax({ 
    dataType: 'jsonp', 
    data: $('#form_login').serialize(), 
    jsonp: 'jsonp_callback', 
    url: "http://news.univadis.it/autenticazione/autentication.asp", 
    complete: function(data, textStatus, XMLHttpRequest){ 
     $("#output").html(data); 
    } 
}); 
}); 

が、私はFirebugのは、このエラーを返す「TRUE」または「FALSE」のメッセージをスタンプしようとすると:私はこのjQueryの機能を書いてきました

XML tag name mismatch (expected meta) </head> 

これは、応答がHTMLである原因でありますJsonではなく、HTMLレスポンスをどのように傍受できますか?

答えて

0

いいえ、動作しません。

JSONPは実際にはハックです。JSONPリクエストを使用してクロスドメインリソースをリクエストすると、jQueryライブラリは<script/>ノードをHTMLドキュメントの先頭に挿入したURLで挿入します。

だからあなたのAJAX要求から次のスクリプトノードが作成されます。もちろん

<script type="text/javascript" src="http://news.univadis.it/autenticazione/autentication.asp?jsonp_callback=jQuery17108946618142072111_1326271422070&_=1326271651101"/> 

を実際のパラメータが異なるだろうが、それは次のようになります。 Webサーバーは、準備されたJavaScript応答を送信する必要があります。準備された応答は、実際の応答は、この例では、JavaScriptの関数呼び出しでラップされなければならないことを意味します。それがなければ

jQuery17108946618142072111_1326271422070('this is your data'); 

あなたはあなたの応答を得ることは決してないだろうコールバックを。

JSONPリクエストでHTML応答を「インターセプト」できないのはそのためです。

+0

申し訳ありませんが、応答を管理するために「成功」​​ステータスコールバックを正しく変更するにはどうすればよいですか? – davelab

関連する問題