8

私は非常に単純なコードを持っています:

$.ajax({
  cache: false,
  dataType: 'html',
  complete: function(jqXHR){
    console.log(jqXHR.responseText);
  },
  success: function(data){
    console.log(data);
  },
  url: 'http://follows.pl/pages/ajaxtest'
});

ff、chrome、IE8 では何らかのテキストが返されますが、IE9 では「未定義」が 2 回表示されます。

IE9 の開発者ツールを調べたところ、通常の応答が表示されたため、要求は正常に機能し、応答は問題ありませんが、変数は未定義です

応答のヘッダー:

Response    HTTP/1.1 200 OK
Cache-Control   no-cache
Content-Type    text/html; charset: UTF-8
Pragma  no-cache

応答

string(4) "test"
4

3 に答える 3

7

これがあなたの問題だと思います:

Content-Type    text/html; charset: UTF-8

その値は正しくフォーマットされておらず (charset の後の ':' が間違っています)、IE9 はそれを好みませんが、有用なことを言う代わりに黙って失敗します。これを試して:

Content-Type:    text/html;charset=utf-8
于 2013-04-03T13:07:08.537 に答える
1

IEブラウザーでのajax投稿の問題を解決するためにあらゆることを試みました(たとえば、jquery ajaxオブジェクトにキャッシュ、dataType、configTypeなどを追加しません...)が、最終的に問題はajax/javascriptではなくPHPファイルにありました: IE ブラウザーの場合のみ、PHP ファイルは次のヘッダーで開始する必要がありました

header("Content-type: text/html; charset=utf-8");

そのため、ajax 呼び出しの結果として取得する php ページのコンテンツ タイプを明示的に示す必要があります。

例として、 javascript を配置するone.htmlという名前の html ページと、 two.phpという名前の php ページがあるとします。

one.html で javascript を次のように設定します

var url = 'two.php';
$.ajax({
url: url,
type: "POST",
success: function(response){
alert(response)
}
});

two.php ページでは、次のように設定します。

<?php
header("Content-type: text/html; charset=utf-8");
echo ('stuff to do');
?>

このように、私にとっては魅力のように機能しました!

于 2013-04-29T13:09:59.343 に答える
0

これを試して :

$.ajax({
  cache: false,
  dataType: 'html',
  complete: function(data){
    console.log(data);
  },
  success: function(data){
    console.log(data);
  },
  url: 'http://follows.pl/pages/ajaxtest'
});

知らせ

成功関数で

 success: function (data, textStatus, jqXHR)

オブジェクトはthird引数です。

そこに存在しないプロパティにアクセスして、実際にデータから応答します。

完全な関数でも

 complete: function (jqXHR, complete_textStatus)

ここでオブジェクトはfirst場所です!

場所を覚えておく必要があります。

于 2012-06-23T09:31:31.493 に答える