2009-02-13 2 views
2

В настоящее время наше корпоративное приложение использует Json.js. Я загрузил js-файл JQuery, включил его на страницу, использующую json, и я начал получать ошибки Javascript в файле json.js. Ошибка:Конфликт Json JQuery

Microsoft JScript runtime error: Object doesnt suppor this propety or method 

Это известная проблема?

EDIT: Я не уверен, где был загружен этот файл json.js (сотрудник сделал это). Тем не менее, json.js выглядит следующим образом:

json.js 
2007-04-13 

Public Domain 

This file adds these methods to JavaScript: 

    array.toJSONString() 
    boolean.toJSONString() 
    date.toJSONString() 
    number.toJSONString() 
    object.toJSONString() 
    string.toJSONString() 

Я заменил этот файл с json2.js и, кажется, что новый файл не имеет функции parseJSON(). Мы используем эту функцию на нескольких страницах.

ответ

1

Похоже, что Json.js использует $ как имя переменной. В этих случаях вам необходимо использовать JQuery's noconflict function. В принципе, вы должны поместить тег сценария JQuery выше тега сценария Json и вызвать noconflict на jquery перед загрузкой библиотеки Json. Одна хорошая особенность в том, что, в то время как noconflict сделать JQuery не использовать $, вы можете присвоить результаты noconflict (которые будут объект JQuery) другой псевдоним, например, так

var $j = jQuery.noConflict(); 

Теперь вы просто использовать $ J в любом месте вы бы использовали $.

1

Для решения любой переменной/метод именования вопросы использовать этот метод, который работал для меня 100% времени :

(function(){ 
    // Your javascript function goes here 
})(); 
1

После замены json.js с json2.js, просто замените конструкции, как

foo.toJSONString() 
foo.parseJSON() 

с

JSON.stringify(foo) 
JSON.parse(foo)