2013-07-22 54 views
0

我是AJAX的初學者& javascript,請耐心等待。解析錯誤語法錯誤簡單AJAX上的意外令牌

我想從我的AJAX傳遞變量(document.getElementById('txtSearch').value)到PHP,所以我想代碼是這樣的:

$("#btnSearch").click(function() { 
      var keyword = ""; 
      alert(document.getElementById('txtSearch').value); 
      $.ajax({ 
       url: BASE_URL + 'index.php/jwm/search', //This is the current doc 
       type: "POST", 
       dataType:'json', // add json datatype to get json 
       data: ({keyword: document.getElementById('txtSearch').value}), 
       error : function(jq, st, err) { 
        console.log(arguments); 
        alert(st + " : " + err); 
       }, 
       success: function(data){ 
        alert(data); 
       } 
      }); 
     }); 

但是,我得到了一個錯誤:parse error syntax error unexpected token <,有時誤差變化不大位是這樣的:parse error syntax error unexpected token T

編輯 這是我的PHP代碼:

function search() { 
     $keyword = $_POST['keyword']; 
     echo "TEST : $keyword"; 
     $result = $this->jwm_m->getDataByKeyword('msmall', $keyword); 
     header('Access-Control-Allow-Origin: *'); 
     header('Access-Control-Allow-Methods: GET, POST'); 
     header('Content-type: application/json', true); 
     echo json_encode($result); 
    } 

這是我的控制檯中看到:

arguments: null 
caller: null 
length: 0 
name: "" 

我的目標是通過document.getElementById('txtSearch').value,請幫助我。

感謝您的幫助:d

+3

是你的PHP腳本實際上返回一個有效的JSON文件? –

+0

檢查開發人員工具網絡面板中的響應。解析錯誤通常意味着後端存在錯誤,並且不會將正確的JSON返回給您。 – godfrzero

+0

您是否能夠獲得'document.getElementById('txtSearch')'該行的任何結果嘗試在控制檯中執行 –

回答

3

幾件事情需要注意的問題更新,在PHP代碼:

  • 你提到你得到一個錯誤parse error syntax error unexpected token T。這可能是因爲PHP中的echo "TEST : $keyword";,導致響應無效JSON。

  • echo "TEST : $keyword";後設置標題,這將拋出一個PHP警告類似Cannot modify header information - headers already sent by...

所以刪除echo "TEST : $keyword";線並嘗試重新發送該請求。這一次,請打開開發者工具的網絡面板並檢查發送/接收的數據。如果您仍然遇到問題,請使用服務器響應&請求正文更新您的問題。你提供的信息越多,你就越有可能得到一個好的解決方案。