簡體   English   中英

PHP,jQuery Ajax和json通過跨域返回

[英]PHP, jQuery Ajax and json return over a cross domain

我在一台服務器上有php編碼頁面,該頁面返回json結果。 php文件名為:getInfoData.php,返回結果如下。

  echo json_encode($v);

不,我可以使用$ .getJSON(??)讀取json並以相同的服務器名運行它,但是我需要將php頁面的服務器名與調用它的js頁面不同。

但是后來我得到了跨域問題。

所以我將代碼更改為使用以下(jsonp):

  $.ajax({
    url: 'FILE_LOCATION_ON_ANOTHER_SERVER',
    type: 'GET',
    crossDomain: true,
    dataType: 'jsonp',
    success: function() { console.log("Success"); },
    error: function() {console.log('Failed!'); }
});

但是我什么都看不到,我只能通過控制台獲得以下信息:

  http://www.THEURL.com/FOLDER/FILENAME.php?callback=jQuery171013088115444406867_1332256223342&_=1332256223343

和一條消息說失敗!

我在做什么錯,怎么辦才能解決?

謝謝

JSONP實際上不是JSON。 這有點“ hack”。 JSONP實際上是一個JavaScript文件,已下載並運行。

在您的PHP頁面中,應該向您傳遞一個callback參數。 您需要在其中“包裝” JSON。 它看起來應該像這樣:

func({json: data})

因此,您的PHP應該如下所示:

echo $_GET['callback'] . '(' . json_encode($v) . ')';

我通常用這個,但也許有更好的方法

<?php header('content-type: application/javascript; charset=utf-8');

$data = array(1, 2, 3, 4, 5, 6, 7, 8, 9);

echo htmlspecialchars($_GET['callback']) . '('.json_encode($data).')';

因為我看到您提供了一個回調參數,所以一切正常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM