0

我正在尝试在 json 数据类型的 jquery 中使用 ajax 发布数据。我正在使用 json 的 stringify 方法来避免单引号,但它不是针对一个值这样做,而是针对其他值。我很困惑。我也尝试使用替换功能,但没有用。

以下是我的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以避免可怕的字符串连接,一旦其中一个参数包含一些特殊字符(例如单引号)就会中断:

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

您的第二个 ajax 调用似乎很好,因为您正确使用了该JSON.stringify方法。

于 2012-06-30T08:40:37.847 回答