从jQuery帖子访问返回的数据到Play Framework

时间:2012-09-10 18:24:25

标签: jquery post playframework

我正在尝试将从外部帖子功能返回的数据访问到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));
            }
        });
    });
})

如何访问返回的数据?我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

  1. dataType中的$.ajax({...})"application/json"更改为"json"
  2. 使用"json"作为dataType时,jQuery会自动将JSON数据转换为JavaScript对象,因此console.log(data)代替alert("Success: " + JSON.stringify(data))
  3. 您的某些参数不正确。
  4. 为什么变量名中的$
  5. 因此,请尝试将代码更改为以下代码。

    $(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
            });
        });
    });