0

json データ型の jquery で ajax を使用してデータを投稿しようとしています。一重引用符を避けるためにjsonのstringifyメソッドを使用していますが、1つの値に対してはそうしていませんが、他の値を実行しています。私は混乱しています。置換機能も使ってみましたがダメでした。

以下は私のjqueryコードです、

$.ajax({
                    type: "POST",
                    url: "<%=ResolveUrl("~/QualityComplaintService.asmx") %>/DoesVariantExists",                    
                    contentType: "application/json; charset=utf-8",
                    data: "{categoryId: '" + category.val() + "', subcategoryId: '" + subcategory.val() + "', brandId: '" + brand.val() + "', variant: '" + variant.val() + "'}",
                    dataType: "json",
                    success: function(msg) {
                        var d = msg.d;
                        if (d == true)
                        {
                           alert("Variant already exists! Please choose another one.");
                           return false;
                        }
                        else
                        {
                        var parameter = {
                                            categoryId: category.val(),
                                            subcategoryId: subcategory.val(),
                                            brandId: brand.val(),
                                            size: size.val(),
                                            variant: variant.val(), 
                                            chkIsActive: chkActive
                                        };
                            $.ajax({
                                type: "POST",
                                url: "<%=ResolveUrl("~/QualityComplaintService.asmx") %>/RegisterVariant",                    
                                contentType: "application/json; charset=utf-8",
                                data: JSON.stringify(parameter),
                                dataType: "json",
                                success: function(msg) {
                                    __doPostBack('<%=btnAdd.ClientID.Replace("_", "$") %>','');
                                }
                            });
                        }                    
                    }
            });

上記のコードを実行すると、サイズ フィールドに一重引用符を挿入できますが、バリアント フィールドに一重引用符を挿入するとエラーが発生します。しかし、同じデータ型です。何が問題になる可能性がありますか?

4

1 に答える 1

2

最初の AJAX リクエストには、次の行があります。

data: "{categoryId: '" + category.val() + "', subcategoryId: '" + subcategory.val() + "', brandId: '" + brand.val() + "', variant: '" + variant.val() + "'}",

JSON.stringifyパラメータの1つに一重引用符などの特殊文字が含まれるとすぐに壊れる恐ろしい文字列連結を避けるために、明らかにこれを置き換える必要があります。

data: JSON.stringify({ 
    categoryId: category.val(), 
    subcategoryId: subcategory.val(), 
    brandId: brand.val(), 
    variant: variant.val()
}),

メソッドを適切に使用しているため、2回目のajax呼び出しは問題ないようですJSON.stringify

于 2012-06-30T08:40:37.847 に答える