因为&而无法在C#传递整个html数据数据中的符号

时间:2016-03-31 15:56:21

标签: javascript c# json ajax

我有一个ajax post方法,我使用stringify传递json数据,并使用ajax调用将其传递给c#服务器端。

数据由几行html表组成。第二行有'&'在输入中。所以任何数据和&没有传递到服务器端。只有'&'之前的数据传递

例如。

[{"FName":"Shesh","LName":"Chari","Department":"Automation"},
 {"FName":"Uma","LName":"uri","Department":"Invest & Ops"},
 {"FName":"Book","LName":"Mac","Department":"Ops"},
 {"FName":"Hard","LName":"Core","Department":"Invest"}]

正如您在上面所看到的,它不是按原样传递整个数据,而是传递下面显示的截断数据。我猜它必须归因于&在数据中。有什么建议吗?

[{"FName":"Shesh","LName":"Chari","Department":"Automation"},
 {"FName":"Uma","LName":"uri","Department":"Invest

这是ajax发送的JSON

var submitData = "=" + JSON.stringify($scope.gridOptions.rowData);

    $.ajax({
        type: 'POST',
        url: 'URL',
        data: submitData
    });

3 个答案:

答案 0 :(得分:1)

&安培;在html中用作转义序列以显示在html中保留的字符(即<变为&lt;>变为&gt;)。因此,&amp;是保留自己。您需要将所有&转换为&amp;

来对JSON字符串进行消毒

请参阅Html entities

答案 1 :(得分:1)

首先清理您的Json数据:

var sanitiseString = $scope.gridOptions.rowData.replace("&", "&amp;")
var submitData = "=" + JSON.stringify(sanitiseString);

$.ajax({
    type: 'POST',
    url: 'URL',
    data: submitData
});

答案 2 :(得分:0)

我会在将&符号发送到服务器之前对其进行编码。你可以通过在可能包含&符号的列上调用一个简单的正则表达式,或者通过在你整理的字符串上调用它来实现这一点。

var searchStr = "&";
var replaceStr = "%26";
var re = new RegExp(searchStr, "g");

这是一篇非常好的帖子,解释了发生了什么,并发布了解决方案。

Stringify with Ampersand