首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在mysql查询中使用javascript变量并填充listview

在mysql查询中使用javascript变量并填充listview
EN

Stack Overflow用户
提问于 2014-10-10 15:08:40
回答 1查看 732关注 0票数 0

我有一个google地图/标记应用程序,我希望在mysql查询中使用标记id,以便在单击标记时提取与列表视图中的标记相关的数据。

该变量是在单击标记时分配的,我正在使用ajax将该值传递到php文件中,以便在mysql查询中使用该变量。

JS

代码语言:javascript
运行
复制
function bindInfoWindow(marker, map, infoWindow, html) {
    google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
        var site_id = marker.get("id");      
        $.ajax({
            url: 'getoffer.php',
            type: "POST",
            data: { site: site_id},
            success: getoffers
        });     
    });
}

在成功时,我调用了getoffers函数,它用数据库值填充listview。

代码语言:javascript
运行
复制
var output1 = '';       
function getoffers() {
    $.post( "getoffer.php?getjson", function( data ) {
        var data = JSON.parse(data);
        console.log(data);
        $.each(data, function(index, value){
            output1 += '<li data-id='+ value.offer_id +'><a href="#"">' + value.offer_title + '</a></li>';  
        });
        $('#offerlist').html(output1).listview().listview('refresh');
    });
}

代码语言:javascript
运行
复制
<?php
$site = $_POST['site_id'];
require("dbconnect.php");
try {
    $DBH = new PDO("mysql:host=$server;dbname=$database;charset=utf8", $username, $password,
      array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
}
catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

$STH = $DBH->prepare("SELECT * FROM Offer WHERE site_id='$site'");
$STH->execute();
$arr = $STH->fetchAll();
echo json_encode($arr);
die();

当我运行应用程序时,没有错误,但是listview是空的。

当我从sql中删除ajax代码和where子句时,代码会返回该表中的所有值,因此我知道它可以处理db连接和listview的输出。如果我调用代码不正确,那么传入ajax的变量肯定出错了。

任何建议都是非常感谢的。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-10 15:13:11

出于某种原因,您正在成功函数中发出单独的ajax请求。成功函数将已经将数据传递给它,因此只需删除第二个ajax请求:

代码语言:javascript
运行
复制
function getoffers(data) {
    //$.post( "getoffer.php?getjson", function( data ) {
        var data = JSON.parse(data);
        console.log(data);
        $.each(data, function(index, value){
            output1 += '<li data-id='+ value.offer_id +'><a href="#"">' + value.offer_title + '</a></li>';  
        });
        $('#offerlist').html(output1).listview().listview('refresh');
    //});
}

此外,正如@Paul所指出的,post数据键与php不匹配,要么将ajax中的数据更改为:

代码语言:javascript
运行
复制
data: { site_id: site_id},

将php更改为使用键site

代码语言:javascript
运行
复制
$site = $_POST['site'];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26302532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档