2014-04-22 50 views
0

我無法通過jQuery.ajax調用來使用我的PHP字符串變量$defaultTicker。我已經嘗試編碼爲utf8並修剪任何類型的「特殊」字符,但沒有任何幫助。如果我查看頁面源,我會看到一個有效的JSON數組:{ "ticker":"SPY", "startDay":1, "endDay":30}爲什麼JSON不接受我的PHP變量?

,這裏是我的jQuery提交數據:

$.ajax({ 
    url: "findCorrelated.php", 
    // WHY DOESN'T <?=$defaultTicker?> work??? 
    data: { 
     "ticker": "<?=$defaultTicker?>", 
     "startDay": 1, 
     "endDay": 30 
    }, 
    success: function (data) { 
     $('#testParagraph').show(); 
     $('#testParagraph').html(data); 
    } 
}); 

任何想法,爲什麼它失敗使用PHP變量提交?如果我硬編碼SPY而不是<?defaultTicker?>,它會成功。但是,查看源時,結果看起來是相同的。

注意:我在一個PHP數組上使用json_encode,因爲startDayendDay值將來自客戶端JavaScript。

編輯:真正的問題是我的瀏覽器設置在Chrome中。它正在緩存我的JavaScript並忽略對這些文件的任何更新,所以我不斷進行更改並獲得相同的結果。

+0

這不是JSON。這只是一個普通的JavaScript對象。 –

+0

如果打印'$ defaultTicker'和打印'SPY'都導致相同的輸出,那麼問題就在其他地方。 (話說回來,你是否確信它們會產生相同的輸出?)你是否打開了一個控制檯(在大多數瀏覽器中使用了[[F12]')並調試了你的javascript? – traq

回答

2

這可能是因爲你的服務器沒有啓用short_open_tag配置。

因此,以下行不會被解析爲PHP代碼,而是被視爲純文本。

"ticker": "<?=$defaultTicker?>", 

使用這個代替:

"ticker": "<?php echo $defaultTicker; ?>" 

短標籤被認爲是一個PITA在編碼世界,因爲如果你有你的代碼遷移到服務器不支持它,或者你無法啓用它,比只有在使用普通標籤時才能編輯所有代碼才適用於該環境。 但是,從5.4.x開始,短手標記由默認啓用並在任何PHP文檔中解析。但要記住不同的環境是很好的。

+0

謝謝,我確實需要打開短標籤選項。 – Jarf1337

0

嘗試使用:的

data: { "ticker":"<?php echo $defaultTicker; ?>", "startDay":1, "endDay":30}, 

代替:

data: { "ticker":"<?=$defaultTicker?>", "startDay":1, "endDay":30}, 
相關問題