Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解析错误语法错误简单AJAX上的意外标记_Php_Jquery_Ajax_Parse Error - Fatal编程技术网

Php 解析错误语法错误简单AJAX上的意外标记

Php 解析错误语法错误简单AJAX上的意外标记,php,jquery,ajax,parse-error,Php,Jquery,Ajax,Parse Error,我是AJAX和javascript的初学者,所以请耐心听我说 我想将一个变量(document.getElementById('txtSearch').value)从AJAX传递到PHP,因此我尝试编写如下代码: $("#btnSearch").click(function() { var keyword = ""; alert(document.getElementById('txtSearch').value); $.a

我是AJAX和javascript的初学者,所以请耐心听我说

我想将一个变量(
document.getElementById('txtSearch').value
)从AJAX传递到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关于您更新的问题,在PHP代码中需要注意以下几点:

  • 您提到您得到了一个错误
    解析错误语法错误意外标记T
    。这可能是因为
    echo“TEST:$keyword”,这会导致响应为无效JSON

  • 您正在
    echo“TEST:$keyword”之后设置标题
    ,这将抛出一个类似于“无法修改标题信息-标题已由…发送”的PHP警告。


因此,删除
echo“TEST:$keyword”行,然后再次尝试发送请求。这一次,保持开发人员工具的网络面板打开,并检查发送/接收的数据。如果您仍然有问题,请使用服务器响应和请求正文更新您的问题。您提供的信息越多,您就越有可能得到一个好的解决方案。

关于您更新的问题,PHP代码中有几点需要注意:

  • 您提到您得到了一个错误
    解析错误语法错误意外标记T
    。这可能是因为
    echo“TEST:$keyword”,这会导致响应为无效JSON

  • 您正在
    echo“TEST:$keyword”之后设置标题
    ,这将抛出一个类似于“无法修改标题信息-标题已由…发送”的PHP警告。


因此,删除
echo“TEST:$keyword”行,然后再次尝试发送请求。这一次,保持开发人员工具的网络面板打开,并检查发送/接收的数据。如果您仍然有问题,请使用服务器响应和请求正文更新您的问题。您提供的信息越多,您就越有可能得到一个好的解决方案。

您的php脚本是否实际返回了一个有效的json文件?请检查“开发人员工具”网络面板中的响应。解析错误通常意味着后端有错误,它没有将正确的JSON返回给您。您是否能够获取
document.getElementById('txtSearch')
此行的任何结果都尝试在控制台中执行。事实上,添加到@godfrzero:您定义的函数名为
search()
在进行AJAX调用时被调用?当您直接转到该URL时,它是否有效?您的php脚本是否实际返回了有效的json文件?请检查开发人员工具网络面板中的响应。解析错误通常意味着后端有错误,它没有将正确的JSON返回给您。您是否能够获取
document.getElementById('txtSearch')
此行的任何结果都尝试在控制台中执行。事实上,添加到@godfrzero:您定义的函数名为
search()
在进行AJAX调用时被调用?当您直接访问该URL时,它是否起作用?
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: ""