【问题标题】:SyntaxError: Unexpected token l in ajax callSyntaxError: ajax 调用中的意外标记 l
【发布时间】:2014-01-30 11:24:14
【问题描述】:

我正在尝试从服务器数据库中获取数据并将其传递给 ajax 以在本地 android 数据库中创建数据库表及其数据。但是当一个 ajax 调用是让它给出以下错误。 日志猫:

01-30 10:58:45.888: D/CordovaLog(31914): Server is not responding... Please try again: SyntaxError: Unexpected token l
01-30 10:58:45.888: I/Web Console(31914): Server is not responding... Please try again: SyntaxError: Unexpected token l at file:///android_asset/www/home.html:513

这里是ajax代码:

$.ajax({
                url : urlServer + 'getTableData.php',
                //      type: 'POST',
                contentType : 'application/json',
                beforeSend : function() {
                    $.mobile.loading('show')
                },
                complete : function() {
                    console.log("ajax complete");
                    createTable();
                },
                dataType : 'json',
                data : {userId: user_id},
                success : function(data) {
                    if (data != null)
                    {
                        dynamic_tabledetails = data.Table_details;
                        dynamic_selectQuery = data.SelectTableQuery;
                        table_data = data;
                        getTabledetails(dynamic_tabledetails);                  
                    } 
                    else 
                    {
                        alert("Error Message");
                    }
                },
                error : function(xhr, ajaxOptions, thrownError) {
                    console.log("Server is not responding... Please try again: "+thrownError);
                }
            });

这里是php代码:

<?php
require_once ('connect.php');
$userID= $_REQUEST['userId'];
$data = array ();
$listtables = array();
$Tabledetails = array();
$select_table = '';
$tab_name = array();
$getlistTables = 'SHOW TABLES FROM sacpl_crm_dev ';
$resultsListTables = mysql_query($getlistTables);
echo 'length of the tables name: '.$resultsListTables.' ';
while ($row = mysql_fetch_array($resultsListTables))
{

if(strpos($row[0],'_trail') == false)
{

$temporarydata = array();
$TableName = new ArrayObject();
$getTabledetails = 'show columns from '.$row[0].'';
$resultdetails = mysql_query($getTabledetails);
$TableName['tablename'] = $row[0];
$tab_name[] =$row[0]; 
$column = array();
 $delete_field = '';
 $comp_codeField = '';
while($rows = mysql_fetch_array($resultdetails))
{
    $column_list =new ArrayObject();
    $column_list['FieldName'] = $rows['Field'];
        $column_list['Default'] = $rows['Default'];
        if(strpos($rows['Type'],'(') == false)
        {
            $column_list['dataType'] = $rows['Type'];
            $column_list['dataType_limit'] ='';
        }
        else
        {
            $type = explode('(',$rows['Type']);
            $column_list['dataType'] = $type[0];
            $column_list['dataType_limit'] = '('.$type[1];
        }
        if($rows['Field'] == 'deleted')
        {
            $delete_field = 'deleted = 0';
        }
        if($rows['Field'] == 'userId')
        {
            $userIdField = $rows['Field'].'="'.$userId.'"';
        }

    $column_list['Extra'] = $rows['Extra'];
    $column_list['Null_value'] = $rows['Null'];
    $column_list['Key_value'] = $rows['Key'];
     $column[] = $column_list;
}

 $TableName['column_details'] = $column;
 $Tabledetails[]=$TableName;
 if($userIdField == '' && $delete_field !='')
 {
    $select_table = 'select * from '.$row[0].' where '.$delete_field.'';
 }
 else if($userIdField != '' && $delete_field =='')
 {
    $select_table = 'select * from '.$row[0].' where '.$userIdField.'';
 }
 else if($userIdField != '' && $delete_field !='')
 {
    $select_table = 'select * from '.$row[0].' where '.$userIdField.' and '.$delete_field.'';
 }
 else{
    $select_table = 'select * from '.$row[0].'';
 }
 $select_query[] = $select_table;

$resultTableData = mysql_query($select_table);
while ($row1 = mysql_fetch_array($resultTableData))
{
    $temporarydata[] = $row1;
}   
$data[$row[0]] = $temporarydata;    

}
}

$data['Table_details'] = $Tabledetails;
$data['SelectTableQuery'] = $select_query;
mysql_close($con);
require_once('JSON.php');
$json = new Services_JSON();
echo ($json->encode($data));
?>

【问题讨论】:

  • 你的 home.html 中哪一行是 513?
  • 缺少分号@$.mobile.loading('show')

标签: javascript php android jquery ajax


【解决方案1】:

注释掉该行:

echo 'length of the tables name: '.$resultsListTables.' ';

此外,在为 AJAX 调用输出 JSON 时,使用以下方法设置 Content-type 标头很重要:

header('Content-type: application/json; charset=utf-8',true);

【讨论】:

    【解决方案2】:

    此 php 代码似乎没有语法错误。问题可能在于包含的 php:“connect.php”和“JSON.php”。能否请您也发布它们,以便我们找到错误。

    【讨论】:

      【解决方案3】:

      将其链接到 PHP 文件的开头:

      header("Content-Type: text/javascript; charset=utf-8");

      【讨论】:

        猜你喜欢
        • 2020-09-28
        • 2018-08-02
        • 2020-10-03
        • 1970-01-01
        • 2022-01-26
        • 1970-01-01
        • 2022-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多