Ajax多重响应

时间:2014-02-12 18:35:32

标签: ajax

我需要使用mysql查询获取名称,我正在尝试通过ajax将一些值发送到php。

Js文件:

var dataselect = 'catg='+ $('#catg_list').val() + '&brand='+ $('#brand_list').val(); // get data in the form manual

$.ajax({
    type="POST",
    url:"check.php"
    data: dataselect,
    success: function(data) {
        alert (data);
    }
});

check.php文件

<?php
    include(database connection);
    $catg_list= $_POST['catg'];
    $brand_list= $_POST['brand'];

    if ($catg_list!="") {
     $catg_query = mysql_query("SELECT name FROM categories WHERE id='$catg_list'");
     if ($catg_query) {
        while ($row_catg=mysql_fetch_assoc($catg_query)) {
            echo $row_catg['name'];
        }
     }
    }

    if ($brand_list!="") {
     $brand_list = mysql_query("SELECT name FROM brand WHERE id='$brand_list'");
     if ($brand_list) {
        while ($row_brand=mysql_fetch_assoc($brand_list)) {
            echo $row_brand['name'];
        }
     }
    }

?>

问题是我需要单独显示上述两个名称。可能吗?我非常喜欢ajax。任何帮助都会很棒。

谢谢

1 个答案:

答案 0 :(得分:0)

您应该以JSON格式发回数据。您可以发送回JSON对象,这就像PHP中的关联数组。你可以使用这个PHP代码:

<?php
    include(database connection);
    $catg_list= $_POST['catg'];
    $brand_list= $_POST['brand'];
    $results = array('categories' => array(), 'brands' => array());

    if ($catg_list!="") {
     $catg_query = mysql_query("SELECT name FROM categories WHERE id='$catg_list'");
     if ($catg_query) {
        while ($row_catg=mysql_fetch_assoc($catg_query)) {
            $results['categories'][] = $row_catg['name'];
        }
     }
    }

    if ($brand_list!="") {
     $brand_list = mysql_query("SELECT name FROM brand WHERE id='$brand_list'");
     if ($brand_list) {
        while ($row_brand=mysql_fetch_assoc($brand_list)) {
            $results['brands'][] = $row_brand['name'];
        }
     }
    }

    echo json_encode($results);
?>

然后,在您的javascript success函数中,您的data变量将是一个包含两个字段的对象,每个字段都包含一个数组。

{
    categories: [],
    brands: []
}

您可以通过迭代data.categoriesdata.brands来访问它们。

最后,不要直接使用带有$ _POST数组的数据的SQL语句。你必须消毒它。

JS

var dataselect = 'catg='+ $('#catg_list').val() + '&brand='+ $('#brand_list').val(); // get data in the form manual

var x, y;

$.ajax({
    type="POST",
    url:"check.php"
    data: dataselect,
    success: function(data) {
        var x = data.categories[0];
        var y = data.brand[0];
    }
});