2011-06-11 25 views
0

注意:這是一個完全不同的問題,直到我意識到問題出在哪裏。來自PHP的JSON中的單引號導致問題

我目前的問題是,我試圖從PHP輸出一些JSON供jQuery使用。我正在做這個跨域,所以我使用「JSONP」。我已經縮小了問題的範圍,因爲我的JSON中有單引號,所以當我使用回調函數輸出時,我得到的引用過多。
我曾嘗試調用PHP str_replace("'","\'",$value),它似乎在我的JSON \\'輸出,而不是\'這顯然是不被jQuery的可讀(雖然網上JSON驗證說,JSON是有效的。

所以我需要知道是如何得到的只是一個單一的斜線在我的字符串PHP的內部,而不是2個斜線

+0

請參閱下面的答案。另外,重新:** EDIT2 **,使用'「\\'」'。單引號不需要在雙引號內轉義,但是反斜槓的確可以。 (只是逃避錯誤的人物) – 2011-06-11 04:26:57

回答

1

我正在收集是這樣的:。

jQuery使用_作爲回調參數JSONP請求它會自動追加?_=jQuery<random_numbers>基本上告訴服務器調用這個獨特的函數名稱返回時。因此,最近(在我想說的去年).ajax負責爲您製作回調函數,然後將它重新路由到您在success屬性中指定的函數。

此外,當您的PHP代碼現在應該使用$_GET['_'](以保持與jQuery及其發送的內容更加一致)時,您的PHP代碼使用$_GET['callback']

「jQuery沒有被調用」只是jQuery通知你預期的回調沒有包括在響應中,它正在尋找確保它被調用。

爲了滿足jQuery,簡短回答(如我所見)引用$_GET['_']而不是$_GET['callback']

+0

你可能對'_'和'回調'是正確的,但那不是我的問題。就像我說的,這個確切的設置完美適用於返回不同JSON的不同按鈕。問題是我的JSON中的單引號,所以我應該問一個完全不同的問題,因爲它現在是通過PHP輸出JSON。儘管謝謝你的迴應。 – 2011-06-11 04:33:47

0

嘗試在PHP中使用此:

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

問候。