2010-12-07 5 views
3

jQuery 1.3을 확장하여 1.4.1+의 parseJSON 함수를 포함하고 jQuery 1.4.1+에서와 같은 방식으로 작동하게 할 수 있습니까? 나는 어떻게 그것에 대해 갈 것인가?jQuery 1.3에 jQuery.parseJSON 추가

jQuery 1.3을 사용해야하는 사이트가 있지만, jQuery 1.4.1에서만 도입 된 parseJSON이 필요한 도구가 있습니다. 내가 1.4.1+에서 parseJSON을 가져 와서 플러그인으로 만들려고 노력해야한다는 것을 모호하게 알고 있지만 어떻게해야할지 모르겠다. 직접 링크, 여기 https://github.com/douglascrockford/JSON-js

또는 :

+1

@yc, json2.js 사용 방법은 무엇입니까 ?? – kobe

+0

@ gov 내 손이 포함 된 기능에 묶여 있습니다. 'parseJSON'을 사용할 수 있어야합니다. 나는 그 우스꽝스런 것을 안다. – Yahel

답변

11

귀하는이 같은 플러그인을 만들 수 있습니다.
이 코드는 jQuery 1.4.4 - found here에서 채택되었습니다. 귀하의 질문에 위와 같이 jQuery 1.3을 포함시킨 후에 평소와 같이 $.parseJSON()을 사용하거나 위의 코드 다음에 플러그인을 포함하기 만하면 $.parseJSON()이 사용됩니다.

+0

이것은 내가 찾고있는 종류의 것입니다. 감사. 테스트하고 다시 연락 할 것입니다. – Yahel

+1

테스트 됨. 이 작동합니다. 감사! – Yahel

+2

1.3.x를 사용하는 경우 약간의 문제 만 발생 ... jQuery.error가 1.4.1까지 추가되지 않았습니다. 추가 : - 오류 : function (msg) { throw msg; }, parseJSON 정의 위의 이 문제를 해결할 것입니다. –

1

당신은 Crockfords 구현을 사용할 수

$.extend({ 
    error: function(msg) { throw msg; }, 
    parseJSON: function(data) { 
     if (typeof data !== "string" || !data) { 
      return null; 
     }  
     data = jQuery.trim(data);  
     if (/^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") 
      .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") 
      .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) {  
      return window.JSON && window.JSON.parse ? 
       window.JSON.parse(data) : 
       (new Function("return " + data))();  
     } else { 
      jQuery.error("Invalid JSON: " + data); 
     } 
    } 
}); 

You can test it here : https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js

0

1.3을 사용하는 코드를 편집 할 수 있습니까? jQuery.json plugin은 $ .toJSON 및 $ .evalJSON을 제공하며 이는 1.4의 새로운 것과 동일합니다. 지원되는 브라우저에서 네이티브 JSON.parse 및 JSON.stringify를 사용할 수 있습니다. 이전 브라우저에서는 JSON.parse 및 JSON.stringify 지원을이 브라우저에 추가하려면 JSON2을 포함시켜야합니다.

+0

아니요, 불행히도 불가능합니다. 내 손은이 플러그인에서받는 코드의 내용에 묶여있다. – Yahel