【问题标题】:ascii is not allowed in JSON string parameter in asp.net APIASP.NET API 中的 JSON 字符串参数中不允许使用 ascii
【发布时间】:2016-07-01 14:29:58
【问题描述】:

我正在尝试将 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>} 

【问题讨论】:

  • 您查看此处显示的字符串的具体情况如何?
  • 我在下面放了一个断点:public HttpResponseMessage PostEditVacature(int id, string velden) {
  • 您使用了什么代码,结果如何? ` &` 不是 JSON 的有效 ASCII 码 - JSON 没有 ASCII 码。 JSON 仅允许 \u1234 形式的 Unicode。贴出你使用的代码、原文和结果,以便重现问题
  • 请将所有这些都放入问题而不是cmets中。

标签: c# asp.net json asp.net-apicontroller


【解决方案1】:

所以你在一个查询字符串中发送 json。

您的查询字符串类似于:

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

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

你需要

encodeURIComponent(JSONVelden) 

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

更好的是,学习如何发布 JSON,而不是在查询字符串参数中发送它。

【讨论】:

  • 是的!那解决了它。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 2017-06-29
  • 1970-01-01
相关资源
最近更新 更多