2015-11-14 39 views
0

我正在使用wordpress JSON API來製作帶有angularJS的android應用程序。我正在使用下面的代碼,並且一切正常。wordpress JSON API未捕獲SyntaxError:意外的令牌<script

$http.jsonp(WORDPRESS_API_URL + 'get_post/' + 
    '?post_id='+ postId + 
    '&callback=JSON_CALLBACK') 
.success(function(data) { 
    deferred.resolve(data); 
}) 
.error(function(data) { 
    deferred.reject(data); 
}); 

但在我的WP網站的某些網頁我用的是jplayer模塊,這使該代碼在<head>

<script> 
var MP3jPLAYLISTS = []; 
var MP3jPLAYERS = []; 
</script> 

<script>標籤與JSON回報這樣

<script> 
var MP3jPLAYLISTS = []; 
var MP3jPLAYERS = []; 
</script> 
angular.callbacks._2({"status":"ok","post": .... 
走來

它給出了意想不到的標記

任何幫助非常感謝!

回答

0

您必須構建僅提供JSON的JSON API。

你在你的問題中有文字JSON API。 API,API的答案必須是JSON有效的。這意味着,該響應只能有標題和JSON數據:

{"data": {"items": [1, 2, 3]}} 

這是正確的JSON。

就你而言,響應包含一些HTML標記。這是無效的JSON,所以你的JSON請求失敗。

+0

我還沒有構建json API。我使用這個插件https://wordpress.org/plugins/json-api/。在某些情況下,JSON響應是正確的(沒有HTML標籤),但在其他情況下,我有這個問題。從你的答案我可以不喜歡,在API中有什麼問題 –

0

我發現了一個解決方案,不是很優雅,但它的工作原理。我在這裏寫下它以防萬一有人遇到同樣的問題。 問題出現在jplayer模塊中。因此,在此模塊的main.php文件中,您可以進行以下更改:

function defineJSvars() 
{ 
    if (! $this->JSvars) { 
     $actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
     $pos = strpos($actual_link, "api/get_"); 

     if ($pos == ""){ 
      echo "\n<script>"; 
      echo "\nvar MP3jPLAYLISTS = [];"; 
      echo "\nvar MP3jPLAYERS = [];"; 
      echo "\n</script>\n"; 
     } 
     $this->JSvars = true; 
    } 
} 
相關問題