JSON asp.net API 中的字符串参数中不允许使用 ascii

ascii is not allowed in JSON string parameter in asp.net API

我正在尝试将 JSON 字符串从 ajax 调用发送到 ASP.NET api。 JSON 字符串到达​​但被截断为 ascii 代码。

那么如何在我的参数字符串中允许使用 ascii 码?

相关代码如下:

function sendBewerkVacature(id) {

    var velden = document.getElementsByClassName("veld");
    var veldenArray = "{'" + velden[0].name + "' : '" + velden[0].value+"'";

    for (var i = 1; i < velden.length; i++) {
        veldenArray = veldenArray + ", '" + velden[i].name + "' : '" + velden[i].value+"'";
    }
    veldenArray = veldenArray + "}";
    var JSONVelden = JSON.stringify({ "velden": veldenArray });
    console.log(JSONVelden);

    $.ajax({
        url: "http://localhost:26454/api/Vacatures/PostEditVacature?id=" + id + "&velden=" + JSONVelden,
        type: "POST",
        statusCode: {
            200: function (data) {
                alert("Geslaagd!");
            }
        }
        })
}


public HttpResponseMessage PostEditVacature(int id, string velden)
{
    db.vacatures.Find(id);
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    vacatures vacature = (vacatures)serializer.DeserializeObject(velden);
    var response = new HttpResponseMessage(HttpStatusCode.OK);
    return response;
}

发送的字符串如下所示:

object a:{"velden":"{'FunctieTitel' : 'Natuurkunde', 'school_naam' : 'undefined', 'vak_naam' : 'Natuurkunde', 'aantal_uren' : '18-25', 'datum_ingang' : '16-2-2011', 'omschrijving' : '<p>Voor de afdeling havo/vwo klas 2 en 3 zijn wij op zoek naar een docent(e) Natuurkunde 2e graads voor 18 tot 25 lesuren per week.</p><p>&nbsp;</p><p>Locatie: Koninginnelaan te Vlaardingen</p><p>Klassen: leerjaar 2 en 3 havo/vwo</p><p>Salaris: inschaling in LB, arbeidsvoorwaarden conform CAO Voortgezet Onderwijs.</p><p>Ingangsdatum: 01-08-2011, tijdelijke aanstelling met uitzicht op een vaste aanstelling.</p>'}"} 

但在控制器中它看起来像这样:

{"velden":"{'FunctieTitel' : 'Natuurkunde', 'school_naam' : 'undefined', 'vak_naam' : 'Natuurkunde', 'aantal_uren' : '18-25', 'datum_ingang' : '16-2-2011', 'omschrijving' : '<p>Voor de afdeling havo/vwo klas 2 en 3 zijn wij op zoek naar een docent(e) Natuurkunde 2e graads voor 18 tot 25 lesuren per week.</p><p>} 

因此您在查询字符串中发送 json。

您的查询字符串类似于:

?id=1234&velden={'vacancy_name': 'clown', 'vacancy_description':'juggle &#38; be funny'}

所以现在您的查询字符串包含一个意外的 &,表示一个查询字符串参数的结尾和下一个查询字符串的开始。

你需要

encodeURIComponent(JSONVelden) 

在将其添加到查询字符串之前。

更好的是,了解如何 post JSON 而不是在查询字符串参数中发送它。