2016-07-01 5 views
2

ajax呼び出しからJSON文字列をASP.NET APIに送信しようとしています。 JSON文字列は到着しますが、ASCIIコードで切り捨てられます。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>} 
+1

ここに示した文字列をどのように正確に見ていますか? –

+0

これを見てください:http://stackoverflow.com/questions/14095247/using-stringescapehandling-escapenonascii-with-json-net – Yar

+0

私は、すぐ下にブレークポイントを配置します:public HttpResponseMessage PostEditVacature(int id、string velden) { – devKoen1

答えて

1

をしたがって、あなたはクエリ文字列でjsonを送信しています。だから今

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

あなたのクエリ文字列は、1つのクエリ文字列パラメータの終了と次の開始を意味する、予想外の&が含まれています

あなたのクエリ文字列は次のように見えます。

あなたはクエリ文字列に追加する前に、あなたは

encodeURIComponent(JSONVelden) 

する必要があります。

さらに、JSONをクエリ文字列パラメータで送信するのではなく、投稿する方法を学びます。

+0

はい!それはそれを修正した。どうもありがとう! – devKoen1

関連する問題