デバッグの目的でgetJSONではなく$ .ajaxを試しています。 getJSONはIE(6,7,8)でエラーを報告しなかったので、jQueryプラグインが返されたイメージをInternet Explorerの画面にペイントしていないのはなぜですか?他のブラウザに表示されている理由を調べようとしています。IEでFireFoxではなく.ajaxコールエラー
だから私はこれを試しました。興味深いことに、IEのエラーイベントには当てはまりますが、Firefox、Safari、その他のものではありません。理由はわかりません(このコードはうまく動作し、FireFoxとその残りの部分でデータをレンダリングします)私は戻っJSONが有効である知っている:
$.ajax({
type: "GET",
url: "http://localhost:59396/sss/sssHandler.ashx?action=getproducts&ids=" + ids,
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
alert(data.length);
carousel.size(allProductIDs.length);
if (numberOfImagesLeftToShow < numberOfImagesToDisplay) {
first += (numberOfImagesToDisplay - numberOfImagesLeftToShow);
}
var d = 0;
for (var i = first; i <= last; i++) {
if (d != undefined) {
// add data using index of the array returned by JSON (which starts at 0)
carousel.add(i, decode(data[d].ImageTag));
}
// set to last ProductID showing in Carousel
if (i == last) { lastProductID = parseFloat(data[d].ProductID); }
d++;
}
},
error: function() {
alert("An error has occurred. Please try again.");
}
});
私はIEが返されるJSONとそんなに問題が発生したか、単にgetJSON ORこのいずれかを使用した機能(データを)実行している理由をトラブルシューティングするために行うには他に何かわかりません。私は応答にもキャッシュを設定していません。それは問題ではありません。 問題はどんな理由であれ、IEは応答に自分の機能(データ)を入力することを拒否します。ここで
は、返された有効な示しJSON(さえhttp://www.jsonlint.com/でそれをチェックする)です:私の.ashxで
[
{
"ImageTag": "\u003cdiv class=\"CarouselItem
\"\u003e<p><img src="http://www.xxx.com/image/
2568.jpg" alt=""></p>\u003cp\u003e\u003ca href=
\"Bear-10.prod\"\u003eTeddy Bear\u003c/a\u003e\u003c/p\u003e\u003cp
\u003e$20.95\u003c/p\u003e\u003cdiv\u003e",
"ProductID": "540"
},
{
"ImageTag": "\u003cdiv class=\"CarouselItem
\"\u003e<p><img src="http://www.xxx.com/image/
50.jpg" alt=""></p>\u003cp\u003e\u003ca href=
\"Pendant362.prod\"\u003eBirthday\u003csup\u003e©\u003c/sup
\u003Necklace\u003c/a\u003e\u003c/p\u003e\u003cp\u003e$36.95\u003c/p
\u003e\u003cdiv\u003e",
"ProductID": "83"
}
]
私は単に製品を、主に以下のコードを
context.Response.ContentType = "application/json";
context.Response.Charset = Encoding.UTF8.ToString();
context.Response.Cache.SetNoStore();
context.Response.Cache.SetExpires(DateTime.MinValue);
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.Cache.SetValidUntilExpires(false);
context.Response.Expires = -1;
context.Response.ExpiresAbsolute = DateTime.MinValue;
context.Response.AddHeader("Cache-Control", "no-cache");
context.Response.AddHeader("Cache-Control", "post-check=0, pre-check=0");
context.Response.AddHeader("Pragma", "no-cache");
...
string jsonString = imageList.ToJSON(); <-- uses the .NET 3.5 JavaScriptSerializer
context.Response.Write(jsonString);
も応答を持っています少なくとも、FireFoxで有効なデータが返されて解析されているため、response.ContentTypeを "application/json"または "text/plain"と指定しても問題はありません。
を実行しました。同じ結果。 FireFoxでは正常に動作しますが、IE8では正常に動作しません。それはエラーを打つ:と私は行を得る:163 エラー:システムエラー:-1072896658。 163行目が私のエラーです。function(){ alert( "エラーが発生しました。もう一度やり直してください。"); } – PositiveGuy
実際には、そこにHTMLを戻したいのですが、それはimgタグに過ぎません...重いものはありません。 – PositiveGuy
これは、同じ正確なコードが他のすべてで実行されるのは意味がありませんが、IEとIEは何も解析できません! – PositiveGuy