2013-07-25 5 views
2

저는 C# 웹 메서드로 조회를 수행하고있는 JQuery 코드에서 ajax 호출을 사용합니다.jquery의 성에서 작은 따옴표를 이스케이프 처리합니다.

일반적으로 대부분의 경우 호출이 작동하며 사용자가 성을 입력해야하며 해당성에 대한 모든 결과가 표시됩니다. 작은 따옴표가 오리어리 같은 을 포함하여 사용자가 마지막 이름을 입력 할 때

문제가 발생합니다.

data: "{selectedAgent: '" + $('#<%=txtAgentNameText.ClientID %>').val() + "', 
    companyID: '" + $('#<%=ddlCompany.ClientID %>').val() + "'}", 

문제는 txtAgentNameText.ClientID 값으로 발생합니다

내가 사용하고있는 JQuery와 라인입니다.

+0

여기서 이스케이프 코드는 무엇입니까? 어떤 이스케이프 문자도 그 앞에'\'를 사용할 수 있습니다. – Praveen

+0

이 문제가 정확히 발생합니까? – user1

답변

1

그래, 이스케이프 문자가 \이므로 \\를 바꿀 수 있습니다. 그렇지 않으면 성을 바꿔 큰 따옴표로 묶을 수 있습니다! 두 방법 모두 충분해야합니다.

+0

두 가지 방법으로 충분할 것입니다. 따옴표를 사용하여 이상한 이름을 얻지 않는 한 :) (그때 사람이 가질 수있는 모든 재미있는 xss 공격을 생각하십시오.) –

+0

Oh는 실제로 그것을 생각하지 않았습니다. – Pablo208

4

jQuery 아약스 메소드에 JSON 문자열을 전달하는 것처럼 보입니다. 왜 그냥 자바 스크립트 개체를 전달하지?

var data = { 
      selectedAgent:$('#<%=txtAgentNameText.ClientID %>').val(), 
      companyID: $('#<%=ddlCompany.ClientID %>').val() 
      }; 

$.ajax({...data:data...}) 
+0

당신은'$ .ajax()'호출에서 JSON 객체를 만들 수 있습니다. – Malkus

+2

JSON 대신 URL 인코딩 된 값을 전달하라는 요청이 변경 될 것이라고 생각합니다. JSON을 유지하려면 해당 데이터를 가져 와서 문자열 화하고 (JSON.stringify (data)) 해당 문자열을 전달하면됩니다. 최신 브라우저를 대상으로하거나 JSON2.js를 귀하의 스크립트. –

관련 문제