我正在尝试将从外部帖子功能返回的数据访问到Play!在本地运行的项目。帖子也在本地执行,但是从xampp(不是Play!)并且成功(在服务器端看到) - 执行crud并返回数据。我可以在网络选项卡上看到Opera的DragonFly上的返回数据,但是我似乎无法访问它。 jQuery甚至没有进入function(data){...}
。
我使用的两种方法是:
$(document).ready(function(){
$('#createTask').click(function(){
alert('In click function');
var $title = prompt('Task title');
var $url = 'http://localhost:9000/application/createtask'
$.post($url,{title:$title}, function(data){
alert('In return function');
//alert(data.title);
//alert(JSON.stringify(data));
}, 'application/json');
$.ajax({
type: "POST",
url: $url,
data: {title:$title},
dataType: "application/json",
success: function(data){
alert("Success: " + JSON.stringify(data));
},
done: function(data){
alert("Done: " + JSON.stringify(data));
},
error: function (data){
alert("Error: " + JSON.stringify(data));
}
});
});
})
如何访问返回的数据?我做错了什么?
谢谢!
答案 0 :(得分:2)
dataType
中的$.ajax({...})
从"application/json"
更改为"json"
。"json"
作为dataType
时,jQuery会自动将JSON数据转换为JavaScript对象,因此console.log(data)
代替alert("Success: " + JSON.stringify(data))
。$
?因此,请尝试将代码更改为以下代码。
$(document).ready(function () {
$('#createTask').click(function () {
console.log('In the "click" handler for "#createTask".');
var task_title = prompt('Task title', '');
console.log('Your task will be given the title: "' + task_title + '".');
var ajax_url = 'http://localhost:9000/application/createtask';
$.ajax({
'complete': function (jqXHR, status) {
console.log('Complete!');
console.log(status);
},
'data': {
'title': task_title
},
'dataType': 'json',
'error': function (jqXHR, status, error) {
console.log('Error!');
console.log(status);
console.log(error);
},
'success': function (data, status, jqXHR) {
console.log('Success!');
console.log(status);
console.log(data);
},
'type': 'POST',
'url': ajax_url
});
});
});