You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ajax从PostgreSQL获取数据实现自动补全文本框无返回问题

解决Ajax调用PHP获取PostgreSQL数据无结果的问题

我帮你排查下Ajax请求里的问题,这几个点应该能解决你的无结果问题:

1. Data参数的语法错误

你的data里有个低级笔误,直接导致PHP拿不到正确的表名参数:

// 错误写法
data: { 'table:':'address', 'fields':'file_as_na', id: 1 },

这里'table:'多了个多余的冒号,应该改成'table':'address',不然PHP里的$_REQUEST['table']会是空值,SQL查询自然没有数据返回。

2. JSONP与JSON的适配问题

你设置了dataType: "jsonp",但要确认你的PHP里的sendJSON()函数是否支持JSONP格式:

  • JSONP要求返回的内容是回调函数名(JSON数据)的包裹格式,如果你的sendJSON只是返回纯JSON字符串,用JSONP会直接解析失败。
  • 如果你的前端和PHP脚本在同一域名下,直接把dataType改成"json"即可,这是最稳妥的选择。
  • 如果确实需要跨域使用JSONP,要修改PHP代码支持回调参数:
// 在sendJSON函数中添加回调处理逻辑
$callback = isset($_REQUEST['callback']) ? $_REQUEST['callback'] : '';
$jsonData = json_encode($statement->fetchAll(PDO::FETCH_ASSOC));
if($callback){
    echo $callback . '(' . $jsonData . ')';
}else{
    echo $jsonData;
}

同时前端Ajax要加上callback: '?'让jQuery自动处理回调函数名。

3. 必做的调试步骤

为了快速定位问题,建议你做这两步调试:

  • 直接在浏览器地址栏访问PHP脚本,手动带上参数:ws_geo_attributequery.php?table=address&fields=file_as_na&id=1,看看返回的是正常JSON数据,还是有SQL错误提示。
  • 在Ajax中添加error回调,打印错误信息:
$.ajax({
    // 其他参数不变
    error: function(xhr, status, error){
        console.log("请求错误状态:", status);
        console.log("错误详情:", error);
        console.log("服务器返回内容:", xhr.responseText);
    }
});

修正后的Ajax代码示例

$.ajax({
    url: "ws_geo_attributequery.php",
    type:'GET',
    dataType: "json", // 同域名下优先用json
    data: { 
        'table':'address', // 修正了冒号错误
        'fields':'file_as_na', 
        id: 1 
    },
    success: function(response){
        var data = $(response).map(function(){
            return {value: this.file_as_na, id: this.id};
        }).get();
        $('#name').autocomplete({
            source: data,
            minLength: 0,
            select: function(event,ui){
                $('input#id').val(ui.item.id);
            }
        });
    },
    error: function(xhr, status, error){
        console.log("请求失败:", status, error);
        console.log("服务器返回:", xhr.responseText);
    }
});

最后提醒你:当前的PHP代码存在严重的SQL注入风险,直接把用户传入的参数拼接到SQL语句里非常危险,建议改用参数绑定的方式构建查询,避免恶意参数攻击。

内容的提问来源于stack exchange,提问作者user2722043

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:38:56