0

私は、私たちのウェブサイト www.phmotorcycles.co.uk/parts/brakes.html の生産およびテスト環境を持っています。ページの右側には、一連のフィルター コントロールがあります。テスト環境では、これは完全に機能します。

ページの読み込み時に、データベースから JSON 応答を返す ASP ページが呼び出されます。

[{"value":"ktm"}]

関数呼び出しは次のとおりです。

function loadFilters(p,l,c) {
$.post('../supportScripts/productFilters.asp',{
    level: l,
    productManufacturer: $("#partMan").val(),
    productGroup: p,
    bikeModel: $("#partBM").val(),
    modelYear: $("#partMY").val(),
    ajax: 'false'}, function(data) {

        var sel = $("#" + c);
        var s = jQuery.parseJSON(data);
        sel.empty();
        sel.append('<option value=\'0\'>Please Select</option>');
        for (var i=0; i<s.length; i++) {
            sel.append('<option value="' + s[i].value + '">' + s[i].value.toUpperCase() + '</option>');
        }
    });
}

私が得ている問題は、Firefox が s を null として報告するため、for ループにあります。

両方の環境ですべてのコードを比較しましたが、データベース上のストアド プロシージャに関しては同じです。

これはしばらくの間私を困惑させました.私はそれをフィドラーで実行しました.リクエストヘッダーとレスポンスは、ライブサーバーで壊れるまで同じです.

どうすればこれを修正できるかについて誰か提案がありますか?

4

1 に答える 1

0

を使用する必要はありませんjQuery.parseJSON。サーバーが を返しContent-type: application/jsonているため、jQuery が解析しています。を使用してContent-type、AJAX 呼び出しの戻り値の型を「インテリジェントに推測」します。

あなたがすべきことは、4 番目のパラメータを$.post, に渡すことです'json'。これは、JSON が予期されていることを jQuery に伝え、JSONContent-typeが間違っていても解析するように指示します。

function loadFilters(p,l,c) {
    $.post('../supportScripts/productFilters.asp',{
        level: l,
        productManufacturer: $("#partMan").val(),
        productGroup: p,
        bikeModel: $("#partBM").val(),
        modelYear: $("#partMY").val(),
        ajax: 'false'
    }, function(data) {
        var sel = $("#" + c);
        sel.empty();
        sel.append('<option value="0">Please Select</option>');
        for (var i=0; i < data.length; i++) {
            sel.append('<option value="' + data[i].value + '">' + data[i].value.toUpperCase() + '</option>');
        }
    }, 'json');
}
于 2013-04-25T15:18:10.593 に答える