2012-05-22 2 views
1

간단한 자바 스크립트 개체가 있습니다. JSON.stringify 함께 serialize 할 asp.net 웹 함수에 그냥 반환합니다.(JSON.stringify) ---> (asp.net 함수) ----> (JSON.parse) ----> Microsoft JScript 런타임 오류 : 잘못된 문자

$(document).ready(function() { 
      $.ajax({ 
       type: "POST", 
       url: "test.aspx/PassBackdata", 
       contentType: "application/json; charset=utf-8", 
       data: "{'args': '" + JSON.stringify(MyObject) + "'}", 
        dataType: "json", 
        success: AjaxSucceeded, 
        error: AjaxFailed 
       }); 
      }); 
      function AjaxSucceeded(result) { 

      var a=JSON.parse(result); 

      } 
      function AjaxFailed(result) { 
       alert(result.status + ' ' + result.statusText); 
      } 


     }; 




    <System.Web.Services.WebMethod()> _ 
    Public Shared Function PassBackdata(args As String) 
      Return args 
    End Function 

가 어떻게이 문제를 해결할 수있는 잘못된 문자 : 내가 JSON으로 반환 된 문자열을 구문 분석 할 때하지만 난

마이크로 소프트의 JScript 런타임 오류가? 당신에게 대신

답변

0

감사합니다

"{'args': '" + JSON.stringify(MyObject) + "'}" 

을이 시도 :

JSON.stringify({args: MyObject}) 
자바 스크립트가 당신을 위해 무엇을 할 수 있는지 자신을하지 마십시오

)

0

그것은 무엇을 MyObject를 알고 도움이 될 것이다 다음과 같이 보입니다 :

JSON은 작은 따옴표가 아닌 큰 따옴표로 된 키 이름을 가져야합니다. 다음과 같이 시도하십시오.

$(document).ready(function() { 
      $.ajax({ 
       type: "POST", 
       url: "test.aspx/PassBackdata", 
       contentType: "application/json; charset=utf-8", 
       data: JSON.stringify({args:MyObject}), 
        dataType: "json", 
        success: AjaxSucceeded, 
        error: AjaxFailed 
       }); 
      }); 
      function AjaxSucceeded(result) { 

      var a=JSON.parse(result); 

      } 
      function AjaxFailed(result) { 
       alert(result.status + ' ' + result.statusText); 
      } 


     }; 
+0

function AjaxSucceeded(result) { var a=JSON.parse(result.d); } 

모르겠어요. 이상한 점은 내가 보내는 문자열이 내가받은 것과 정확히 동일하다는 것입니다. 잘못된 문자 오류 메시지를 이해하지 못합니다. – Marky68

+0

with data : JSON.stringify ({args : MyObject}) 내부 서버에 오류 500이 발생합니다. 이상한 점은 내가 보내는 문자열이 내가받은 것과 정확히 동일하다는 것입니다. 잘못된 문자 오류 메시지를 이해하지 못합니다. immediatly 모두 문자열링하고 구문 분석하면 whell이 ​​작동합니다. 문자열을 asp.net 함수로 다시 보내면 함수가 그대로 반환합니다. 동일한 문자열이더라도 JSON으로 구문 분석 할 수 없습니다. utf-8과 관련되어있을 수 있습니다. 그것을 바꾸는 무엇인가 – Marky68

+0

: JSON.parse (result.d) 작동합니다. – Marky68

3

succes 함수에서 오류가 발생하면 결과 개체의 형식을 확인하는 것이 좋습니다. var a=JSON.parse(result.d);은 webservice에 의해 반환 된 방법이기 때문에 직접 json이 아니라 json 인 "d"필드가있는 객체입니다.

결과를 확인하기 위해 나는 바이올린을 사용합니다.

+0

나는 그것을 경험했다! 기묘한! –

0

내가 수행하는 경우 : JSON.parse(result) 대신 JSON.parse(result.d)이 작동합니다. JSON.stringify ({인수 : MyObject를}) 내가 오류 500 오류 내부 서버를 얻을 데이터

관련 문제