Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数据发布到php页面并将结果作为json编码为单个项的多维数组的ajax代码?_Javascript_Php_Jquery_Json_Ajax - Fatal编程技术网

Javascript 将数据发布到php页面并将结果作为json编码为单个项的多维数组的ajax代码?

Javascript 将数据发布到php页面并将结果作为json编码为单个项的多维数组的ajax代码?,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,对不起,这个奇怪的题目 这里我想说的是——我的数据库中有两个表。表1是酒店表,表2是房间型表,我想做的是,当客户定制他的旅行套餐时,他应该能够使用单一模式根据不同的位置更改酒店 我的问题是:当我在PHP页面(即hotel_selector.PHP)中传递位置时,我应该得到一个JSON作为 [ { "hotel_id": "1", "hotel_name": "velocity", "hotel_location": "portblair",

对不起,这个奇怪的题目

这里我想说的是——我的数据库中有两个表。表1是酒店表,表2是房间型表,我想做的是,当客户定制他的旅行套餐时,他应该能够使用单一模式根据不同的位置更改酒店

我的问题是:当我在PHP页面(即hotel_selector.PHP)中传递位置时,我应该得到一个JSON作为

[
    {
        "hotel_id": "1",
        "hotel_name": "velocity",
        "hotel_location": "portblair",
        "hotel_type": "3",
        "hotel_img": "velocity.jpg",
        "roomtype_id": "1",
        "type_name": "Deluxe",
        "type_description": "blah",
        "type_img": "deluxe.jpg"
    },
    {
        "hotel_id": "2",
        "hotel_name": "whitecoral",
        "hotel_location": "portblair",
        "hotel_type": "3",
        "hotel_img": "white_coral.jpg",
        "roomtype_id": "1",
        "type_name": "luxury",
        "type_description": "blah",
        "type_img": "luxury.jpg"
    }
]
但我有不止一个单一酒店的房间类型,所以当用户单击“更改酒店”按钮时,如何显示带有房间类型的酒店

我的php代码(hotel_selector.php)

合并怎么样?请看一下这两个阵列:

<?php
$one = array(
"hotel_id" => "1",
"roomtype_id" =>"1"
);

$two = array(
"hotel_id" => "2",
"roomtype_id" =>"1"
);


$three[0] = array_merge($one,$two);
$three[1] = array_merge($one,$two);
echo( json_encode($three));
?>
我的想法是,您可以在每次迭代中合并$result&$result2,并将合并后的数组作为新关联数组的元素:

$result = array();
$result2 = array();
$merged_array = array();

$query = mysql_query("SELECT * FROM hotel WHERE hotel_location = '$location' AND visibility = 'visible'")or die("the query cannot be completed");
while($row = mysql_fetch_array($query, MYSQL_ASSOC)){
    $hotel_id = $row['hotel_id'];   
    $sql= mysql_query("SELECT * FROM room_type WHERE hotel_id = '$hotel_id'");
    while($row1=mysql_fetch_array($sql, MYSQL_ASSOC)){

    $result2[] = $row1; 
    }   
$result[] = $row;                                             

$merged_array [] =  array_merge($result1,$result2); // see here .....

}
/*echo json_encode($result); 
echo json_encode($result2); 
*/

echo  json_encode($merged_array);// see here........

尝试在一个对象中对两个返回数组进行json_编码:

hotel_selector.php:

...
echo json_encode(array("hotels" => $result, "rooms" => $result2));
在ajax调用中有如下内容:

...
success: function (data) {
     alert("hotels: " + data.hotels + "\nrooms: " + data.rooms);
}

iam将警报值设置为-hotels:undefined rooms:undefined可能意味着您在警报中引用了错误的数组键。尝试在成功函数中使用
alert(json.stringify(data))
显示您的整个返回json对象我多次获得相同的酒店我的输出如下:[[{“hotel_id”:“1”,“hotel_name”:“velocity”,“hotel_location”:“portblair”,“hotel_type”:“2”,“hotel_description”:“hotel_img”:“velocity.jpg”,“visibility”:“visible”},{“roomtype_id”:“1”、“酒店id”:“1”、“类型名称”:“豪华”、“描述”:“img”:“3.jpg”;“房间类型id”:“4”、“酒店id”:“1”、“类型名称”:“豪华”、“描述”:“img”:“3.jpg”;“房间类型id”:“9”、“酒店id”:“1”、“类型名称”:“超级豪华”、“描述”:“img”:“3.jpg”;“房间类型id”:“10”、“酒店id”:“1”、“类型名称”:“超级豪华”、“描述”:“img”:”客房类型id:“11”,“酒店id:“1”,“酒店img:”“test”,“description:”“img:”“”,“{”酒店id:“1”,“hotel\u name:“velocity”,“hotel\u location:”“portblair”,“hotel\u type:”“2”,“hotel\u description:”“hotel\u img:”“velocity.jpg”,“visibility:”“visible”},{”酒店id:“3”,“hotel\u name:“White Coral”:“White Coral”,“hotel\u location:“portblair”,“hotel\u type:”“hotel\u description:”“3”,“hotel\u描述”“:”,“hotel\u img”:“White Coral.jpg”,“visibility”:“visibility”;“{”roomtype\u id:“1”,“hotel\u id:“1”,“type\u name:“Deluxe”,“description:”,“img:“3.jpg:”豪华”,“description:”,“img:“3.jpg”;“{”roomtype\u id:“9”,“hotel\u id:“1”,“type\u name:”超级豪华”,“description:”img:“3.jpg”,“RoomID:”10:”,“酒店id”:“1”、“类型名称”:“超豪华”、“说明”:“yts h xnh hs ns”、“img”:“3.jpg”;{“roomtype_id”:“11”、“酒店id”:“1”、“类型名称”:“测试”、“说明”:“dddddd”、“img”:“test.jpg”;{“roomtype_id”:“2”、“酒店id”:“3”、“类型名称”:“Std Ac”、“说明”:“img”:“5”、“酒店id”:“3”、“类型名称”:“img”:“img”:”
...
success: function (data) {
     alert("hotels: " + data.hotels + "\nrooms: " + data.rooms);
}