将数据从ajax加载到html标签和列表框不起作用

时间:2016-11-29 21:09:39

标签: php json ajax

我正在用ajax从数据库调用数据,我希望在html页面中将结果加载到两个输入(标签和列表框)中,问题是它显示标签#FrmCount中的值但它没有在列表框#FarmersID中显示任何内容.. 这是ajax

  $.ajax({
    type:"POST",
    url:"AddData.php",
    dataType: 'json',
    data:
        { 
            'Order_ID': Order_ID, 
            'Frm_ID':Frm_ID,
            'Frm_Wet':Frm_Wet,
            'Frm_Dry':Frm_Dry,
            'Frm_Fermented':Frm_Fermented,
            'Frm_Date':Frm_Date
        },
    success: function(data)
        {   
            $("#FrmCount").html(data.FarmerCount);
            $("#FarmersID").html(data.FarmersID);
        },
        error: function(jqXHR, textStatus, errorThrown) {
        console.log('ERROR', textStatus, errorThrown);
    }

})

这是php代码:

$stmt1 ="SELECT distinct Farm_id FROM ordersfarmers WHERE Order_ID='".$_POST["Order_ID"]."'AND Reply='1'";

        $results=$conn->query($stmt1)->fetchAll();
        $res=count($results);
        foreach ($conn->query($stmt1) as $row) 
        {
            $json = array("FarmerCount" => $res,
          "FarmersID" => $row['Farm_id']
          );
        echo json_encode($json);
        }

和html部分

<div>
<select name="FarmersID" id="FarmersID" multiple style="width:280px;height:110px;" onclick="showonmap()">   
</select>
</div>
<div>
<label id="FrmCount"></label>
</div>

2 个答案:

答案 0 :(得分:0)

您的PHP不正确。

您正在获取所有结果,然后尝试再次获取,但语句指针已经位于数据集的末尾。

试试这个:

$results = $conn->query($stmt1)->fetchAll();
$res = count($results);

$json = array(
    "FarmerCount" => $res,
    "FarmersID" => $results
);
echo json_encode($json);

您不需要在数组中使用此FarmerCount项,只需通过data.FarmersID.length获取此数字。

答案 1 :(得分:0)

使用代码@media (max-width: 1200px) { #svggroup svg { width: 800px; } } @media (max-width: 960px) { #svggroup svg { width: 600px; } } @media (max-width: 768px) { #svggroup svg { width: 400px; } } @media (max-width: 420px) { #svggroup svg { width: 200px; } } ,您基本上可以创建类似的内容:

$("#FarmersID").html(data.FarmersID);

这不是一个正确的选择格式,你需要的是在html中创建<select name="FarmersID" id="FarmersID" multiple style="width:280px;height:110px;" onclick="showonmap()"> 1 <!-- your id --> </style> 。对于此示例,您可以执行以下操作:

option

但是你总会得到一个元素。你应该返回一个数组(你现在没有这样做)或者你可以在$("#FarmersID").append('<option value="' + data.FarmerID + '">' + data.FarmerID + '</option>'); 中构建适当的html并将其返回到php

编辑:

javascrip

并在javascript中

foreach ($conn->query($stmt1) as $row) 
{
    $farmesIds[$row['Farm_id']] = $row['Farm_id'];
}
$json = array(
    "FarmerCount" => $res,
    "FarmersID" => $farmesIds
);
echo json_encode($json);

您可以传递其他内容作为值(标签或smth?)并将ID作为密钥保存。