2013-01-23 17 views
3

我正在使用json的ajax调用。我打电话给ajax电话的酒店名单,但现在我必须打电话给特定酒店的价格。请支持。在JSON的响应对象上调用Ajax

守则酒店名单如下:
HTML

<td style="color: #993300"><strong>Add Services<input name="add-service" id="add-service" type="button" value="+" style="background-color: #993300; color: #FFFFFF;" /></strong></td>

的JQuery对于调用Ajax获得酒店列表:

$('#cmb_service').bind('change', function(){

 var value = $(this).val(); 
     var destination = $("#destination") 
     $.ajax({ 
       type : 'POST', 
       url : '../enquiries/getpricebyajax', 
       dataType : 'json', 
       data: { 
         service : value, 
         destno : destination.val() 
       }, 
       success : function(data) { 
         $('#waiting').hide(500); 
         $('#divserviceprovider').text(''); 
         $('#divserviceprovider').append(data.msg); 
         $('#divserviceprovider').show(500); 
         if (data.error === true) 
          $('#divserviceprovider').show(500); 
       }, 
       error : function(XMLHttpRequest, textStatus, errorThrown) { 
         $('#waiting').hide(500); 
         $('#divserviceprovider').removeClass().addClass('error') 
          .text('There was an error.').show(500); 
         $('#divserviceprovider').show(500); 
       } 
     }); 
     return false; 
});` 

PHP代码的响应酒店名单如下:

function getpricebyajax()

{ 
      $str="";$substr=""; 
      if(!empty($_POST['service'])) 
       { 
        switch ($_POST['service']) { 
         case "3": 
          { 
           $rshotels=$this->Enquiry->query("SELECT id, name FROM hotels where destination_id=".$_POST['destno']); 
           foreach($rshotels as $hotel){ 
             $substr.='<option value="'.$hotel['hotels']['id'].'">'.$hotel['hotels']['name'].'</option>'; 
           } 
           $str.= '<select id="cmb_hotel" name="cmb_hotel">'.$substr.'</select>'; 
           $str.= '<div id="divhotel_details"></div>'; 
          } 
          break; 
         default: 
          break; 
        } 
        $return['error'] = true; 
        $return['msg'] = $str; 
       } 
      exit(json_encode($return)); 
    } 

`

我直接HTML的代码粘贴到DIV。它很好地显示了酒店名单。但是选择“divhotel_details”的代码是什么。当我点击divhotel_details时,我必须再次调用ajax来生成该酒店的价格。

请给我建议。

在此先感谢。

回答

4

您可以点击此处查看正确的方法来调用一个JSON服务:) - https://rvieiraweb.wordpress.com/2013/01/21/consuming-webservice-net-json-using-jquery/

编辑:

<script> 

function AjaxCall(){ 
    var hotel_val = $("#ddl_hotel").val(); 

    //do service ajax call passing the hotel val 

    success: function(response) { 
    $("#display_info").empty(); 
    //this 
    $("#display_info").append(response.Yourfields); 
    //or LOOP and show in div 
    }, 
    error: function(response) { 
     $("#display_info").append("No info for this hotel"); 
    } 
} 
</script> 

<select id="ddl_hotel" onchange="AjaxCall();"> 
    <option value="hotel1">Hotel 1</option> 
    <option value="hotel2">Hotel 2</option> 
    <option value="hotel3">Hotel 3</option> 
</select> 

<div id="display_info"> 
+0

感谢里卡多,但我需要基于第一个响应的动作调用嵌套的AJAX 。 –

+0

你可以得到正确的答复并显示这个问题?所以想让你试着做的是在选择框中,改变时调用新的价格是否正确? –

+0

你可以这样做然后在你的callAjax()再次调用服务并在div中显示信息,首先清理div $(“#div”) .empty(); $(“#div”)。append(ajaxresponse)我会为你发布一个新线程 –