2016-03-01 111 views
0

我是AJAX的新手,看來我可能會缺少一個非常基本的細節。未捕獲的SyntaxError:解析JSON時出現意外的令牌錯誤

我想在處理AJAX請求時調試服務器端。代碼工作正常,在服務器端註釋掉以下行。

// php_console ($inputName, ' - Field EMPTY!!!'); 

當上述行執行它給「未捕獲的SyntaxError:意外令牌」的錯誤,而在AJAX成功函數解析JSON數據,在下面的行

var valResponse = $.parseJSON(theResponse); 

好像AJAX返回變量'反應'無論如何都是一樣的,至少在我打印時是直觀的。

$("#contentRight").html(theResponse); 

爲什麼echo'ing出什麼導致parseJSON打破?

任何幫助將不勝感激。

這裏是AJAX請求:

function performFormValidation(formID, fieldObject, action) { 
    formFieldsData = prepFormDataForAjax (formID); 
    var URL  = BASE_DIR + 'formValidation.php' 
    var formData = JSON.stringify(formFieldsData); 

    $.ajax({ 
     url: URL, 
     type: 'POST', 
     data: {data:formData}, 
     success: function(theResponse){ 
      $("#contentRight").html(theResponse); 
      var valResponse = $.parseJSON(theResponse); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      alert ('Error: ' + errorThrown); 
     } 
    }); 
} 

這裏是AJAX過程:

<?php 
$data = json_decode($_POST['data']); 
$response = array(); 

foreach ($data as $dataField) { 
    $inputName = $dataField[0][0]; 
    $formEntry = trim($dataField[0][1]); 

    $validData = 1; 
    $errorCode = ''; 
    foreach ($dataField as $pair) { 

     ////////////////////////////////////////////////////////// 
     // data-rule-required 
     ////////////////////////////////////////////////////////// 
     if ($pair[0] == 'data-rule-required' && $pair[1] == 'true' && isEmpty($formEntry)) { 
     // php_console ($inputName, ' - Field EMPTY!!!'); 
      $validData=0; $errorCode=sprintf(_('This field is requided')); 
     } 
    } 
} 
echo json_encode($response); 

這裏是php_console功能:

function php_console($data, $alert) { 
    echo '<script language="javascript">'; 
    echo 'console.log("' . $data . $alert .'")'; 
    echo '</script>'; 
} 

回答

0

所有PHP echo語句(典型值)直接轉到Web服務響應 - 無論您在何處放置它。所有回顯語句都按您的代碼的控制流程順序附加。你的情況會發生什麼,JavaScript腳本標籤顯示爲你的JSON的一部分,並破壞了語法。

查看瀏覽器中的響應選項卡以檢查確切的響應 - 您將看到它不是JSON,因此您的錯誤。

相關問題