Я использую jQuery-1.4.2 с CakePHP, и несколько дней назад у меня это работало нормально, но сейчас это не так. Я не помню, чтобы что-то менять. Я беру URL-адрес, сгенерированный из javascript, и помещаю его прямо в браузер, и я могу видеть результаты в своем браузере, однако javascript просто возвращает нулевое значение. У кого-нибудь есть иды?
<script type="text/javascript">
$(document).ready(function() {
var url = "http://mysite.com/vote/";
$.get(url + "view/" + $(".votediv").attr("id") +".json" ,
function(data,textStatus, XMLHttpRequest) {
console.log(data);
console.log(textStatus);
console.log(XMLHttpRequest);
if(data.Votes.votecast != undefined) {
$(".vote."+data.Votes.votecast).addClass("current");
}
},"json");
$('.vote').click(function () {
if ($(this).hasClass("current")) {
alert("You have already voted for this option!");
} else {
var error = false;
if ($(this).hasClass("up")) {
$.post(url + "edit/" + $(".votediv").attr("id") +".json", {'vote': 'up'},
function(data) {
console.log(data);
}, "json");
//alert("Voted Up!");
}
else if($(this).hasClass("down")) {
$.post(url + "edit/" + $(".votediv").attr("id") +".json", {'vote': 'down'},
function(data) {
console.log(data);
}, "json");
//alert("Voted Down!");
}
//removes all the votes
$(this).parent().children().removeClass("current");
if(!error) {
$(this).addClass("current");
} else {
alert("There was an error");
}
}
return false;
});
});
</script>
Выход из консоли отладки в браузере:
null
success
XMLHttpRequest
abort: function () {x&&h.call(x);
onabort: null
onerror: null
onload: null
onloadstart: null
onprogress: null
onreadystatechange: function () {}
readyState: 4
responseText: ""
responseXML: null
status: 0
statusText: ""
upload: XMLHttpRequestUpload
withCredentials: false
__proto__: XMLHttpRequestPrototype
TypeError: Result of expression 'data' [null] is not an object.
Failed to load resource: cancelled
Вывод моего php-скрипта:
{"Votes":{"votecast":"up","sumvotes":"1","totalvotes":"1"}}
Мне интересно, почему я продолжаю получать нулевые данные. Есть идеи? Я не делаю междоменный запрос. Я запрашиваю только сценарий в своем домене.
EDIT:
Я изменил вывод JSON так, чтобы он отображался как {"Votes":{"votecast":"up","sumvotes":"1","totalvotes":"1"}}
, и jsonlint.com говорит, что это допустимый JSON, однако он все еще не работает, а jQuery говорит, что результат равен нулю.