2012-01-13 5 views
1

Internet Explorer(IE6、IE7、IE8)では、ヌル文字( "0x00")とその後の文字はajax応答(データ)から削除されます。IE AJAXレスポンスは、ヌル(0x00)文字の後にすべてのデータを切り捨てます。

私は、次のようなAJAX要求のループを持っている:

var pages = 10; 
var nextnoteid = 0; 

for (isub = 1; isub <= pages; isub++) 
    { 
    var c = "http://www.site.com/application.exe?id=" + nextnoteid; 
    $.ajax(
     { 
     url: c, 
     cache: false, 
     async: false, 
     success: function(data) 
      { 
      var start = data.indexOf("NEXTNOTEID") + 10; 

      // save the id of the next note to retrieve 
      nextnoteid = data.substring(start, start + 16).trim(); 
      data = data.substring(0, start - 10); 

      // append note to DOM 
      $("#printarea").append("<pre class='pxprintpage'>" + data + "</pre>"); 
      } 
     }); 
    } 

応答は次の形式(_ 0x00の文字を表します)で返されます:どのように

Note Title 
Note Author 
... simple text note ... 
__________NEXTNOTEID__________9827482998274829__________ 

IE6、IE7、IE8で0x00の後にこのデータを取得することはできますか?

答えて

0

IEブラウザでは、NULL文字列で文字列を終了します。解決方法は、ヌル文字をスペースで置き換えることです。残念ながら、これは唯一の解決策であるように思われます。これは質問された質問に正確には合致しません。

0

これが本当に役立つかどうかはわかりませんが、.ajax()に渡されたオプションのdataTypeフィールドを"text"に設定してみてください。

これで問題が解決しない場合は、.ajax()に渡されたdataFilterオプションをご覧ください。生の応答を処理するコールバック関数を指定することができます。

+0

私はすべての文書化されたdataTypを試しました。 dataFilter関数は、最初の0x00の文字列も終了します。 –

関連する問題