2016-07-01 2 views
2

ajax 호출에서 JSON 문자열을 ASP.NET API로 보내려고합니다. JSON 문자열이 도착하지만 아스키 코드에서 잘립니다.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'} 

당신의 쿼리 문자열은 하나 개의 쿼리 문자열 매개 변수의 끝과 다음의 시작을 의미하는 예상치 못한 &이 포함

귀하의 쿼리 문자열이 같이 보입니다. 당신은 쿼리 문자열에 추가하기 전에

당신은

encodeURIComponent(JSONVelden) 

해야합니다.

더 나은 방법은 JSON을 쿼리 문자열 매개 변수로 보내는 대신 게시하는 방법을 배우는 것입니다.

+0

예! 그것은 그것을 고쳤다. 고마워요! – devKoen1

관련 문제