需要帮助才能找到语法错​​误

时间:2014-11-25 15:17:46

标签: php jquery

我有一个错误抛出说明"发出请求时发生错误:SyntaxError:意外的输入结束"经过一些研究后,我发现存在语法错误。我无法找到语法错​​误,需要一双新眼睛。有谁能看到它?

jQuery代码:

$('#searchTable tr').click(function(){
    var parcel_id = $(this).attr('id');
    $.ajax({
        url: "classes/get-apn.php?parcel_id=" + parcel_id,
        //timeout: 30000,
        type: "GET",
        data: { parcel_id : 'parcel_id' },
        dataType: 'json',
        error: function(SMLHttpRequest, textStatus, errorThrown){
            alert("An error has occurred making the request: " + errorThrown)
        },
        success: function(data){
            //do stuff here on success
            alert('<?php echo $data; ?>');                  
        }
    });
});

PHP代码:

<?php
header("content-type:application/json");
require('db-connections.php');

$i = isset($_GET['parcel_id']) ? $_GET['parcel_id']: null;

class Apn {

    public function GetApn () {
        $db = new ezSQL_mysql(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
        $sql = "select apn from lcv where id=" . $i;
        $data = $db->query($sql);

        print_r($data);//print data for checking
    }
}
?>

4 个答案:

答案 0 :(得分:1)

您的php脚本以header("content-type:application/json");开头,最后使用print_r,而且它不是有效的json。

你应该在php代码中使用echo json_encode($data);。如果你仍然有同样的错误,这可能是由一个可以“破坏”有效json格式的php警告/通知引起的。

编辑:更多解释。

php代码是正确的,但问题是jquery期望与php输出的对比:

  1. jquery需要json(dataType: 'json'选项中的$.ajax)。
  2. php声明使用header("content-type:application/json")发送json,但生成print_r输出,这不是有效的json格式。
  3. 因此,ajax.success函数无法处理php发出的数据,而是使用ajax.error来处理错误。

答案 1 :(得分:0)

尝试:

data: { parcel_id : parcel_id }

答案 2 :(得分:0)

您将parcel_id发布为纯字符串而非变量。

将其更改为:

data: { parcel_id : parcel_id }

另外,

在php文件中

使用json_encode

答案 3 :(得分:-1)

Google告诉我这是一个JavaScript错误,第10行缺少分号:

alert("An error has occurred making the request: " + errorThrown)

您可以使用Google,jshint和Zend Studio解决此问题。

编辑DOUBTERS,以下是网站上的文字:

Metrics

There are 3 functions in this file.

Function with the largest signature take 3 arguments, while the median is 1.

Largest function has 2 statements in it, while the median is 1.

The most complex function has a cyclomatic complexity value of 1 while the median is 1.
One warning
10  Missing semicolon.
One undefined variable
1   $
2   $
3   $
Three unused variables
9   textStatus
9   SMLHttpRequest
12  data
JSHint

    About
    Documentation
    Install
    Hack
    Blog

1

        $('#searchTable tr').click(function(){

2

                var parcel_id = $(this).attr('id');

3

                $.ajax({

4

                    url: "classes/get-apn.php?parcel_id=" + parcel_id,

5

                    //timeout: 30000,

6

                    type: "GET",

7

                    data: { parcel_id : 'parcel_id' },

8

                    dataType: 'json',

9

                    error: function(SMLHttpRequest, textStatus, errorThrown){

10

                        alert("An error has occurred making the request: " + errorThrown)

11

                    },

12

                    success: function(data){

13

                        //do stuff here on success

14

                        alert('<?php echo $data; ?>');                  

15

                    }

16

                });

17

            });