SO や他の場所でこの問題を抱えている他の多くの人々を見てきましたが、与えられた解決策はどれもうまくいかないようです。
ASHX ハンドラーへの jQuery AJAX 呼び出しがあります。このコードは Firefox と Chrome では機能しますが、IE (バージョン 8、9、または 10) では機能しません。
そのように見えます(簡略化):
var val = $(this).val();
$.ajax({
url: '/Source/Handlers/Search.ashx?q=' + val,
type: "GET",
cache: false,
dataType: 'json',
error: function(w,t,f) {
alert(w + "\n" + t + "\n" + f);
},
success: function (data) {
...
}
});
IE でコードを実行すると、エラー ハンドラが開始され、次のように表示されます。
[object Object]
error
error
便利でしょ?
ASHX ハンドラーは次のようになります (これも単純化されています)。
public class Search : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "application/json";
context.Response.Buffer = false;
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<Suggestions> jsonResponse = new List<Suggestions>();
// do some stuff
context.Response.Write(serializer.Serialize(jsonResponse));
}
}
「GET」を「POST」に交換しようとしました。「キャッシュ」プロパティを有効または無効にしようとしました。「json」、「xml」、「text」などのさまざまな dataType 設定を試しました。
HTTP Fiddler を使用すると、json 応答が戻ってくることがわかりますが、IE はそれを処理できないようです。
何か案は?
編集
HTTP Fiddler からの TextView の JSON 応答を次に示します。
543
[{"title":"GAMES","results":[{"title":"abcdefg™","link":"http://www.abcdefg.com/en_gb/abcdefg/","image":"/uploadedImages/abcdefg/games/1-Game_Folder_Master(1)/Config/abcdefg(1).jpg","total":""},{"title":"abcdefg","link":"http://www.abcdefg.com/en_gb/abcdefg","image":"/uploadedImages/abcdefg/games/1-Game_Folder_Master(1)/Config/abcdefg.jpg","total":""},{"title":"abcdefgg","link":"/Retailers/?game=1432&platform=0","image":"/uploadedImages/abcdefg/games/1-Game_Folder_Master(1)/Config/abcdefg.jpg?n=9736","total":""},{"title":"abcdefg","link":"http://www.abcdefg.com","image":"/uploadedImages/abcdefg/games/1-Game_Folder_Master(1)/Config/abcdefg.jpg","total":""},{"title":"abcdefg","link":"/Retailers/?game=1763&platform=0","image":"/uploadedImages/abcdefg/games/1-Game_Folder_Master(1)/Config/abcdefg_promo.jpg","total":""}],"total":"24","link":"/Search/?q=total"},{"title":"MEDIA","results":[{"title":"Videos","link":"/Search/?q=total","image":"","total":"1"},{"title":"Screenshots","link":"/Search/?q=total","image":"","total":"35"}],"total":null,"link":null}]
0
編集2
うーん、w.status を警告する $.ajax 呼び出しを更新したところ、"404" が返されました。混乱 - Fiddler が応答を 200 として表示するときに、ステータスで 404 を返すにはどうすればよいですか?