это - определенное поведение? Это - безопасный перекрестный браузер?
Да. И да.
там любое обоснование, базовое, почему это - способ, которым это...
значение this
довольно просто вывести:
this
используется в функции конструктора, и функция была вызвана с new
, ключевое слово, this
относится к объекту, который будет создан. this
продолжит означать объект даже в открытых методах. this
используется где-нибудь еще, включая вложенный , защитил функции, это относится к глобальной области видимости (который в случае браузера является объектом окна). второй случай является, очевидно, недостатком дизайна, но довольно легко работать вокруг этого при помощи закрытий.
Проблема может заключаться в том, что данные json, возвращаемые с URL-адреса, имеют неправильный формат. Когда сервер действительно что-то возвращает, код состояния http равен 200. Но это не означает, что данные соответствуют правильному json. Убедитесь, что возвращаемые строковые данные json сформированы правильно.
Я отвечаю на собственное предположение, потому что я усвоил это на собственном горьком опыте. Я не экранировал символ кавычки в моих данных json. Это привело к очень странному поведению. К счастью, двойные кавычки - это практически единственный символ, который нужно экранировать из данных, доставленных через JSON. (Подробнее об этой проблеме: Где я могу найти список управляющих символов, необходимых для моего возвращаемого типа JSON ajax? )
Возвращает ли ваш обратный вызов страницу с Content-type: application / json
? Если нет, то это вполне могло быть причиной.
Я много тестирую с file: urls вместо использования веб-сервера. В моем коде JSON всегда будет неправильный тип MIME. Чтобы решить эту проблему, я использую следующий код:
$(document).ready(
function (){
myData = {};
$.ajax({
type: "GET",
// url: "json.php?fn=jsonData.json", // with Apache
url: "jsonData.json", // As a file:/// URL
contentType: "application/json; charset=utf-8",
data: myData,
beforeSend: function(x) {
if(x && x.overrideMimeType) {
x.overrideMimeType("application/json; charset=UTF-8");
}
},
dataType: "json",
success: function(returnData){
$("#jsonData").html("Success:"+returnData.tag);
},
error: function(returnData) {
$("#jsonData").html("Error:"+returnData.tag);
}
});
}
);
Это заставит тип MIME быть правильным для данных JSON.