2017-04-12 96 views
1

我在JSON.parse()中有一個錯誤,我有.php文件,其中包含從數據庫檢索數據的方法和.js文件的autoComplete函數,我的.php文件返回數據作爲字符串,我需要將其轉換爲對象通過使用JSON.parse()。未捕獲的SyntaxError:意外的標記<位於位置0的JSON中:位於對象的JSON.parse(<anonymous>)處。 <anonymous>

這是我的PHP文件

<?php 
include_once("database_conn.php"); 

function request($conn) 
{ 
    $eventstArray = array(); 

    $events = "SELECT * 
       FROM te_events,te_category,te_venue 
       WHERE te_events.venueID = te_venue.venueID 
        AND te_events.catID = te_category_catID 
       ORDER BY 1 
       "; 

    $eventsQuery1 = mysqli_query($conn,$events) or DIE (mysqli_error($conn)); 

    while($eventsQuery2 = mysqli_fetch_array($eventsQuery1)) 
    { 
     $eventstArray[] = array 
     (
      'label'   => $eventsQuery2['eventTitle']; 
      'venue'   => $eventsQuery2['venueName']; 
      'category'  => $eventsQuery2['catDesc']; 
      'price'   => $eventsQuery2['eventPrice']; 
      'description' => $eventsQuery2['eventDescription']; 
     ); 
    } 

    return json_encode($eventstArray); 
} 
echo request($conn); 
?> 

,這是我autoComplete.js文件

$(document).ready(function() 
      { 
       'use strict'; 
       $.ajax 
       ({ 
        method: "get", 
        url: "requestOffer.php" 
       }) 
       .done(function(data) 
       { 
        var offers = JSON.parse(data); 

        // now we have the data attach the autocomplete 
        $('#EOffers').autocomplete 
        ({ 
         minLength:3, 
         source: offers, 
         select: function(event, ui) 
         { 
          $('#chosenEvent').text(ui.item.label); 
          $('#chosenEvent').text(ui.item.vanue); 
         } 
        }); 
       }); 
      }); 

我無法刪除JSON.parse()來,因爲我需要從字符串轉換反對,希望有人能幫助我解決這個問題,我真的很感激。

+0

'data'應該已經是JSON,所以你不需要'JSON.parse內部 「JSON」()' ,通過console.log(data)' – Satpal

+0

檢查一次,當你的服務器端發生錯誤時,通常會發生這種情況,那麼響應並不是一個有效的json,這一行註釋一下'var offers = JSON.parse(數據);'然後console.log(數據);你的錯誤將在控制檯 –

+0

我曾嘗試刪除JSON.parse,並且該功能根本不起作用 –

回答

1

錯誤在您的服務器端,當您的服務器端出現錯誤時,當出現錯誤時,PHP會添加標籤並顯示錯誤消息,該響應附帶了html標籤'<'。因此,你的json包含html標籤,並因爲意外的標籤而變得無效。

The error is within this array

$eventstArray[] = array 
     (
      'label'   => $eventsQuery2['eventTitle']; 
      'venue'   => $eventsQuery2['venueName']; 
      'category'  => $eventsQuery2['catDesc']; 
      'price'   => $eventsQuery2['eventPrice']; 
      'description' => $eventsQuery2['eventDescription']; 
     ); 

應該

$eventstArray[] = array(
      'label' => $eventsQuery2['eventTitle'], 
      'venue' => $eventsQuery2['venueName'], 
      'category' => $eventsQuery2['catDesc'], 
      'price' => $eventsQuery2['eventPrice'], 
      'description' => $eventsQuery2['eventDescription'] 
     ); 
0

該錯誤通常看到的時候給JSON.parse值實際上是不確定的。所以,我會檢查試圖解析這個的代碼 - 很可能你沒有解析這裏顯示的實際字符串。

0

這是服務器端錯誤。您可以使用瀏覽器的開發工具(如Firefox)檢查服務器返回的值(php代碼),並檢查響應消息。

另外,也許你可以刪除JSON.parse()來添加數據類型:Ajax的功能

相關問題