0

我是 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 <有时错误会稍微改变成这样:parse error syntax error unexpected token T

编辑 这是我的 PHP 代码:

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: ""

我的目标是通过 document.getElementById('txtSearch').value,请帮助我。

感谢您的帮助:D

4

1 回答 1

3

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

  • 你提到你得到一个错误parse error syntax error unexpected token T。这可能是因为echo "TEST : $keyword";在 PHP 中,导致响应为无效 JSON。

  • 您在之后设置标题echo "TEST : $keyword";,这将引发类似于以下的 PHP 警告Cannot modify header information - headers already sent by...

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

于 2013-07-22T11:07:24.643 回答