2013-04-08 29 views
0
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(function(){ 

     $.getJSON('http://localhost:8080/privateTraining/getTrainingsJson?callback=?',    
      function(data) { 
       console.log("success"); 
       alert(data); 
     }); 

    }); 

這裏的響應越來越多但是成功函數永遠不會運行。

這裏getJson是遠程服務器調用。

當我檢查與firbug,響應給予有效的JSON數據(被檢查與http://jsonlint.com/ JSON數據及其給結果作爲有效的JSON

偶試過:

$.ajax({ 
     dataType: "jsonp", //set this to json 
     url: "http://localhost:8080/privateTraining/getTrainingsJson", 
     success: function(data) 
     { 
      var myObj = data; 
      console.log(myObj); //to see the object 
     } 
    }); 

但給人同樣的結果..成功功能未執行

+0

JSON無效JSONP。因此,如果你告訴jQuery期望JSONP(URL和'dataType:「jsonp」中的'callback =?'都會這樣做),那麼響應將被錯誤地評估,並且成功回調將不會被調用。那麼,服務器返回的是JSONP還是JSON?如果是JSON,請移除'callback =?'並將'dataType'設置爲''json''。現在,如果您正在進行跨域請求(即'http:// localhost:8080 /'不提供請求的頁面),則必須使用JSONP,在這種情況下,您必須設置你的服務器返回JSONP(你可以改用CORS)。 – 2013-04-08 13:29:06

+0

因爲我們不知道服務器真正返回什麼以及您的網絡設置是什麼,所以猜測是我們能做的最好的。 – 2013-04-08 13:34:27

+0

@FelixKling:服務器返回json數據 – monda 2013-04-08 13:44:11

回答

1

嘗試刪除「?callback =?」從你的url:我似乎記得那與jasonP有關(跨域)

JQuery可能正在尋找一個名爲「?」的函數。而不是調用你提供的成功函數。

+0

更新我的問題 – monda 2013-04-08 13:25:57

+0

jQuery將用它生成的函數的名稱替換'?',它將調用該函數內部的成功回調函數(如果其他所有內容都是正確的)。 – 2013-04-08 13:27:46

+0

@monda,如果您將「成功」更改爲「完成」,它會觸發嗎? – Nathan 2013-04-08 13:29:43

相關問題