【问题标题】:JSON decode php problemsJSON解码php问题
【发布时间】:2013-10-23 10:35:02
【问题描述】:

我有 index.php 并且在解码 json 数组时遇到问题..请帮助我是新手..

<script>
$(document).ready(function () {
    $("#slider_price").slider({
        range: true,
        min: 0,
        max: 100,
        step: 1,
        values: [0, 100],
        slide: function (event, ui) {
            $("#app_min_price").text(ui.values[0] + "$");
            $("#app_max_price").text(ui.values[1] + "$");
        },
        stop: function (event, ui) {
            var nr_total = getresults(ui.values[0], ui.values[1]);

            $("#results").text(nr_total);
        },
    });
    $("#app_min_price").text($("#slider_price").slider("values", 0) + "$");
    $("#app_max_price").text($("#slider_price").slider("values", 1) + "$");
});

function getresults(min_price, max_price) {
    var number_of_estates = 0;
    $.ajax({
        type: "POST",
        url: 'search_ajax.php',
        dataType: 'json',
        data: {
            'minprice': min_price,
            'maxprice': max_price
        },
        async: false,
        success: function (data) {
            number_of_estates = data;
        }
    });
    return number_of_estates;
}

还有search_ajax.php

<?php
 require_once('includes/commonFunctions.php');
// take the estates from the table named "Estates"
if(isset($_POST['minprice']) && isset($_POST['maxprice']))
{
 $minprice  = filter_var($_POST['minprice'] , FILTER_VALIDATE_INT);  
 $maxprice  = filter_var($_POST['maxprice'] , FILTER_VALIDATE_INT); 
 $query = mysql_query("SELECT * FROM cars WHERE min_range >= $minprice AND max_range     <= $maxprice");

$rows = array();
while($r = mysql_fetch_assoc($query)) {
  $rows[] = $r;
}

echo json_encode($rows);

}
?>

问题是我只想在特定的 div "number_results" 中打印 $rows.. 如何解码该 json 数组?

【问题讨论】:

标签: php jquery json post


【解决方案1】:

你确定你传递的数据是json格式吗

我觉得应该是

'{"minprice": "min_price", "maxprice":"max_price"}'

【讨论】:

  • 是的,这是最低和最高价格范围滑块值。现在它只给了我 [object Object],[object Object],[object Object]
  • @PanditAnkur 我想我误解了你的问题。您希望在成功时显示行数还是行本身?
  • 我需要滑块值,例如:18 或 30。输出将显示介于 18 到 30 之间的记录。
  • @PanditAnkur 在success 中使用console.log(data) 并复制并粘贴评论中的日志
【解决方案2】:

您不能只从函数返回 ajax 返回值,因为 ajax 是异步的……在 ajax 调用完成时,该函数已经返回 number_of_estates

使用回调或只是调用一个函数并将返回的文本附加到那里

..
stop: function( event, ui ) {
  getresults(ui.values[0], ui.values[1]);
},
...

function getresults(min_price, max_price)
{ 
   var number_of_estates = 0;
   $.ajax({
     type: "POST",
     url: 'search_ajax.php',
     dataType: 'json',
     data: {'minprice': min_price, 'maxprice':max_price},
     async: false,
     success: function(data)
     {
        number_of_estates = data;
        $("#results").text(number_of_estates);
     }
  });
 }

但是每次停止函数发生时都会调用 ajax,所以要小心。

【讨论】:

  • 你能发布你在成功函数中获得的数据吗......试试console.log(data)并检查你的开发工具
  • 使用我之前的代码,它在#results div 上显示[object Object],[object Object]。
  • 你尝试使用console.log() .. 警报会给你[object Object] 一个对象
猜你喜欢
  • 2023-03-05
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多