2012-09-10 25 views
0

我試圖訪問從外部post函數返回的Play數據!在本地運行的項目。這篇文章也是在本地執行的,但是從xampp(不是Play!)開始,並且成功(在服務器端看過) - 執行crud並返回數據。我可以在網絡選項卡上看到Opera的DragonFly返回的數據,但是我似乎無法訪問它。 jQuery甚至沒有進入function(data){...}從jQuery post訪問返回的數據到Play Framework

我用這兩種方法是:

$(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次調用相同的url?哪個玩!版?你可以發佈'createTask'函數的代碼嗎? – Samuel

+0

按照這個解決方案:http://stackoverflow.com/questions/8855524/play-framework-and-jquery-ajax-request-with-data-as-array/43166837#43166837 –

回答

2
  1. 變化dataType$.ajax({...})"application/json"簡單"json"
  2. 當使用"json"作爲dataType時,jQuery自動將JSON數據轉換爲JavaScript對象,因此console.log(data)而不是alert("Success: " + JSON.stringify(data))
  3. 你的一些參數不正確。
  4. 爲什麼$在你的變量名?

因此,請嘗試將您的代碼更改爲下面的代碼。

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

順便說一句,你可能必須使用JSONP來如果他們想出解決跨域問題。 – jonathanmarvens

+0

謝謝!但是這似乎不適合我。 「錯誤」和「完整」功能被調用,但不是「成功」。響應代碼是「HTTP/1.1 200 OK」。響應爲200時,爲什麼沒有調用成功? (我仍然可以在Opera中看到返回的響應,但是使用'jqXHR.responseText'返回null) – Luke

+0

@LukeLindner您可以在Google Chrome或Chromium上試用它並截取巡視控制檯的屏幕截圖嗎?上傳截圖,並在此處註釋鏈接。我想看看執行上面的所有JavaScript時會發生什麼。我想查看控制檯記錄的所有內容。我做了一個本地的PHP服務,它採用相同的參數,這段代碼對我來說工作得很好。 – jonathanmarvens