Хорошо, вторая проблема в том, что вы неправильно понимаете jsonp. Википедия выглядит так:
Запросы для JSONP извлекают не JSON, а произвольный код JavaScript.Они оцениваются интерпретатором JavaScript, а не анализируются анализатором JSON.
Если вы хотите использовать методы success
и error
, вам лучше использовать прямой json
в качестве dataType,Вот очень простой пример (обратите внимание, что с IE не будет работать, потому что в коде есть console.log
- если вы используете IE, просто удалите эти строки):
<html>
<head>
<script src="js/jquery.js" ></script>
<script language="javascript">
$(function() {
var output = $('#output');
$.ajax( {
url: "test.json",
timeout: 5000,
dataType: "json",
success: function(data, status){
$.each(data, function(i,item){
var landmark = '<h1>'+item.name+'</h1>'
+ '<p>'+item.latitude+'<br>'
+ item.longitude+'</p>';
output.append(landmark);
});
},
error: function(err, textStatus, errorThrown) {
output.text("There was an error [" + textStatus + "] loading the data.");
console.log(err);
console.log(errorThrown);
}
});
});
</script>
</head>
<body>
<div id="output"></div>
</body>
</html>
и test.jsonна моем сервере выглядит так:
[
{ "name": "First", "latitude": 100, "longitude": 120 },
{ "name": "Second", "latitude": -23, "longitude": -20 },
{ "name": "Third", "latitude": 40, "longitude": 120 }
]
Надеюсь, это поможет, Крейг