2013-11-27 2 views
0

Ajax에서 ASP.NET 처리기에 액세스하려고합니다. 앵커 태그를 사용하여 데이터를 전달하고 일부 테스트 문자열을 반환합니다.JavaScript 런타임 오류 : 유효하지 않은 문자

아약스 코드 컨트롤이 context.Response.Write() 문을 떠날 때까지

function incvote(topicid) { 
    $.ajax({ 
     type: "POST", 
     url: "WCAccess.ashx", 
     data: JSON.stringify({ "desid": "topicid" }), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      return response.d; 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 

      alertify.error("Some error occured. Please try again."); 
     }, 
     //async: true 
    }); 

처리기 코드

public class WCAccess : IHttpHandler { 

    public void ProcessRequest (HttpContext context) { 
     JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); 
     string jsonString = string.Empty; 
     List<ArgsVals> argsList = new List<ArgsVals>(); 
     context.Request.InputStream.Position = 0; 
     using (var inputStream = new System.IO.StreamReader(context.Request.InputStream)) 
     { 
      jsonString = inputStream.ReadToEnd(); 
     } 

     argsList = jsonSerializer.Deserialize<List<ArgsVals>>(jsonString); 
     string resp = ""; 
     foreach (ArgsVals arg in argsList) 
     { 
      resp += arg.desid; 
     } 
     context.Response.Write("<text>"+resp+"</text>"); 
    } 

    public bool IsReusable { 
     get { 
      return false; 
     } 
    } 
    public class ArgsVals 
    { 
     public string desid { get; set; } 
     //public int vtype { get; set; } 
    } 
} 

모든 것이 잘 작동 : 다음은 코드입니다. 데이터 resp이 데이터를 멋지게 전달합니다. 하지만 문제는 자바 스크립트가이 오류를 표시하고 있다는 것입니다 : JavaScript runtime error: Invalid character.

나는 다른 사람의 웹 사이트를 검색했다. 그리고 나는 또한이 해결책을 시도했다 : Ajax request has invalid characters 그러나 아무것도 작동하는 것처럼 보입니다. 같은 오류가 계속 발생합니다.

+0

데이터 : JSON.stringify ({desid : topicid}), – Triode

+0

이미 인용되거나 인용되지 않은 모든 변형을 이미 시도했습니다. 아무것도 효과가 없습니다. –

+0

alertify.error() 이것은 무엇을합니까? – Triode

답변

1

응답에서 JSON 대신 HTML/XML을 반환하려고합니다.

context.Response.Write("<text>"+resp+"</text>"); 

보내려는 메시지의 구조는 JSON webpages을 읽어보십시오.

+0

정말 감사드립니다. 나는 데이터 타입을'html'으로 바꾸었고 작동했습니다. ** ** 내가 묻고 싶은 또 하나의 점은 핸들러에서이 응답으로 앵커 태그의 텍스트를 변경하는 방법입니다. 나는 이것을 document.getElementById ("suplink"). innerHTML = response.d;와 같이하고 있지만 핸들러가 전달한 것처럼'test' 대신에 텍스트를'undefined'로 변경합니다. 도와주세요. –

+0

jQuery를 이미 사용하고 있으므로 addClass 및 removeClass 함수를 살펴보고 색상 용 CSS를 추가하십시오. 또한 $ ('# suplink')와 같은 것을 사용해야합니다 .html (response); – vogomatix

+0

이제 알겠습니다. 그리고 데이터 타입을 html로 변환 한 후 문제는 서버 측에서 데이터를 deserialize하고'argsList'에 저장할 수 없다는 것입니다. 그것의 0 요소를 보여줍니다. 그러나 데이터를 얻는 데있어 json 문자열. –

관련 문제