2016-12-27 4 views
0

다음과 같이 코드에서 webMethod를 정의했습니다.매개 변수를 로컬 변수로 사용하는 Ajax 호출이 작동하지 않습니다.

[System.Web.Services.WebMethod] 
     public static string testCall(int qid, String answerContent) 
     { 
     log.Debug("this is call from jquery" + qid.ToString() + answerContent); 

      return "true"; 
     } 

아래와 같이 jquery에서 ajax 호출을 통해이 메소드를 호출하려고합니다.

<script> 

     $(".submitBtn").click(function (e) { 

      alert(this.id); 
      var qID = this.id; 

      $.ajax({ 
       type: "POST", 
       url: '/default.aspx/testCall', 
       data: '{ "qid":' + qID + ', "answerContent":"test" }', 
       contentType: "application/json; charset=utf-8", 
       success: function() { 

       }, 
       failure: function (response) { 
        alert("fail"); 
       }, 
       dataType: 'html' 
      }); 
     }); 
      </script> 

하지만 이는 작동하지 않습니다.

그러나 아래와 같이 매개 변수의 하드 코딩 된 값을 전달합니다. 정상적으로 작동합니다.

data: '{ "qid":"1234", "answerContent":"test" }' 

그러나 var qID 당신과 같이이 줄을 사용해야합니다

+0

'data : JSON.stringify ({ "qid": qID, "answerContent": "test"})로 한번 테스트하십시오. – Satpal

+0

Webforms를 올바르게 사용하고 있다고 가정합니까? – Valkyrie

+0

@Valkyriee 예. –

답변

1

는 JSON을 손으로 조립하지 마십시오. ID 값이 정말 수 (경우

data: JSON.stringify({qid: qID, answerContent:"test"}), 

: 당신은 등

대신, JSON의 stringifier를 사용하여, 당신은 구분 기호를 놓치지거야, 문자열에 기대하지 않는 자에 물린 얻을 것이다 ,

data: JSON.stringify({qid: +qID, answerContent:"test"}), 
// ------------------------^ 

...하지만 당신이 일을 말했다 당신의 하드 코드 예제는 ID에 대한 문자열을 사용 : 당신은 this.id가 문자열로, 당신은() 구문 분석 할 것입니다)를 int로 수신하고 그래서 ...

+0

시도했는데 여전히 작동하지 않습니다. –

+0

내가 작업하고있는 모든 것을 게시했습니다. 서버 측에서는 하드 코드 된 값인 "1234"가 int에 대해 파싱 가능하며 작동하는 이유가 될 수 있습니다. 하지만 그래, 나는 이것을 통과시키고 싶다. 나는 나를 위해 일하지 않는 것이다. –

+0

좋습니다. "this.id"는 정수 값을 가지지 않습니다. 왜 실패했는지. 내 사과. 매개 변수 유형을 string으로 변경했는데 효과가있었습니다. 당신의 도움을 주셔서 감사합니다. –

1

를 작동하지 않는 매개 변수로 지나가는 :

data: '{ "qid": "' + qID + '", "answerContent":"test" }' 
+0

아니, 그/그녀는 정말로해서는 안됩니다. –

+0

작동하지 않습니다. –

관련 문제