2017-05-17 49 views
0

我想從一個不同的服務器(技術上相同的提供者,但我不認爲它真的很重要)解析一個外部php文件內的json文件與ajax。在一個php文件中的外部json對象的Ajax調用

反正我在我的WordPress網站創建從我的數據庫json文件,代碼如下:

 <pre> 
      <?php 


      global $wpdb; 
      if(!isset($wpdb)) 
      { 
       require_once('wp-config.php'); 
       require_once('wp-includes/wp-db.php'); 
      } 

      $result = $wpdb->get_results ("SELECT * FROM " . $table_prefix . "some_row"); 
      print_r(json_encode($result, JSON_UNESCAPED_SLASHES)); 
      ?> 
     </pre> 

該文件的URL(例如)http://somewebsite.com/phpjson.php

我是從其他網址(例如)調用http://app.someotherwebsite.com這樣:

$(document).ready(function() { 
    $(function(){ 
      $.ajax({ 
       url: "http://somewebsite.com/phpjson.php", 
       type: "GET", 
       dataType: "JSON", 
       cache: false, 
       success: function(markers) { 
        $.each(markers,function(i, val){ 
        //do something 
       } 
    }); 
}); 

出於某種原因,我不能打電話可能是因爲其他東西格式的文件,任何線索?

回答

1

幾個問題:

  1. json_encode()結果是一個字符串,而不是陣列。因此,而不是使用print_r()您應該使用echoprint
  2. <pre>標記中包裝JSON使JSON無效,因此無法通過jQuery進行分析。您應該刪除<pre>/</pre>標籤。
  3. 爲了獲得最佳效果,請確保在輸出JSON數據之前設置內容類型標題:header('Content-Type: application/json');

試試這個,讓我們知道它是否可以解決問題。

+0

謝謝!我從來沒有理解過一件事。我應該在哪裏放一個頭像這樣的頭('Content-Type:application/json');?在PHP腳本或.htaccess文件中?在非常開始?在php標籤之前? – Matto

+1

'header()'是一個PHP函數,所以它必須在PHP文件中,介於'<?php'和'?>'之間。由於'header()'函數告訴瀏覽器期望什麼,所以在你發送任何輸出之前必須調用**(否則你會得到一個'headers already sent'警告)。 – rickdenhaan

0

檢查文檔:http://api.jquery.com/jQuery.ajax/

跨域(默認爲false同域請求,真正的跨域請求)

類型:Boolean

如果您希望強制在同一個 域上的跨域請求(例如JSONP),將crossDomain的值設置爲true。例如,對於 ,可以將服務器端重定向到另一個域。 (版本增加: 1.5)

相關問題