2014-10-10 94 views
0

当有结果显示时,我的函数可以很好地执行。但是,如果没有结果,或者在我的情况下,显示程序主机记录,我希望显示“无结果”消息。然而,没有任何反应。有任何想法吗?谢谢您的帮助!Ajax错误功能未触发

$('#Lookup').click(function() { 
var form_data = $('#validation-form').serializeArray(); 

$.ajax({ 
    url: "<?php echo site_url('opportunity/search_existing_program_host'); ?>", 
    type: 'POST', 
    data: form_data, 
    cache: false, 
    success: function(server_response) { 
     var data = $.parseJSON(server_response); 
     var html = '', program_host; 

     html += '<tr><th>Program Host Name</th><th>Location</th><th>Session Prefix</th><th>Agency No.</th></tr>'; 
     for(var i = 0; i < data.length; i++){ 
      program_host = data[i]; 
      html += '<tr><td>' + program_host.Program_Host_Name + '</td><td>' + program_host.Address_1 + ', ' + program_host.City + ', ' + program_host.State + '</td><td>' + program_host.Session_Number_Prefix + '</td><td>' + program_host.Agency_Number + '</td></tr>'; 
     } 

     $('#existing_program_hosts').append(html); 
    }, 
    error: function() { 
     //alert('Error'); 
     var html = ''; 

     html += '<tr><th>No Results</th></tr>'; 
     $('#existing_program_hosts').append(html); 
    } 
}); 

$('#Create_Host_btn').show(); 

}) 

这里是我的将结果返回功能:

function search_existing_program_host() { 
    $Program_Host_Name = $this->input->post('Program_Host_Name'); 
    $Address_1 = $this->input->post('Address_1'); 

    $program_hosts = $this->ion_auth_model->search_existing_program_host($Program_Host_Name, $Address_1); 

    foreach($program_hosts as $program_host): 
     $results[] = array(
      "Program_Host_Name"   => "$program_host->Name", 
      "Session_Number_Prefix"  => "$program_host->Session_Number_Prefix", 
      "Agency_Number"    => "$program_host->Agency_Number", 
      "Address_1"     => "$program_host->Address_1", 
      "Address_2"     => "$program_host->Address_2", 
      "Zip_Code"     => "$program_host->Zip_Code", 
      "Primary_Phone_Number"  => "$program_host->Primary_Phone_Number", 
      "Secondary_Phone_Number" => "$program_host->Secondary_Phone_Number", 
      "Fax_Number"    => "$program_host->Fax_Number", 
      "Number_501c3"    => "$program_host->Number_501c3", 
      "Expiration_501c3"   => "$program_host->Expiration_501c3", 
      "City"      => "$program_host->City", 
      "State"      => "$program_host->State" 
     ); 
    endforeach; 

    echo json_encode($results); 

} 

回答

0

在“成功”功能,你可能要检查“server_response”的价值,看它是否为null。总结成功函数内部的代码检查

if (server_response != null) { 
....current code... 
} else { 
...do soemthing if no data is returned. 
} 
+0

不过不是为我工作。在我看来,如果结果为空,成功不会执行。但是,错误也没有做到。 – 2014-10-13 13:30:38

0

更新您的功能,如:

function search_existing_program_host() { 
    $Program_Host_Name = $this->input->post('Program_Host_Name'); 
    $Address_1 = $this->input->post('Address_1'); 

    $program_hosts = $this->ion_auth_model->search_existing_program_host($Program_Host_Name, $Address_1); 

    $results = array(); 
    foreach($program_hosts as $program_host): 
     $results[] = array(
      "Program_Host_Name"   => "$program_host->Name", 
      "Session_Number_Prefix"  => "$program_host->Session_Number_Prefix", 
      "Agency_Number"    => "$program_host->Agency_Number", 
      "Address_1"     => "$program_host->Address_1", 
      "Address_2"     => "$program_host->Address_2", 
      "Zip_Code"     => "$program_host->Zip_Code", 
      "Primary_Phone_Number"  => "$program_host->Primary_Phone_Number", 
      "Secondary_Phone_Number" => "$program_host->Secondary_Phone_Number", 
      "Fax_Number"    => "$program_host->Fax_Number", 
      "Number_501c3"    => "$program_host->Number_501c3", 
      "Expiration_501c3"   => "$program_host->Expiration_501c3", 
      "City"      => "$program_host->City", 
      "State"      => "$program_host->State" 
     ); 
    endforeach; 

    $return = array('success' => (count($results)>0), 'results' => $results); 

    echo json_encode($results); 

} 

而且你的AJAX:

$.ajax({ 
    url: "<?php echo site_url('opportunity/search_existing_program_host'); ?>", 
    type: 'POST', 
    data: form_data, 
    cache: false, 
    dataType: 'json', 
    success: function(server_response) { 
     if (!server_response.success) { 
      alert("No Results"); 
     } else { 
      var data = server_response.results; 
      var html = '', program_host; 

      html += '<tr><th>Program Host Name</th><th>Location</th><th>Session Prefix</th><th>Agency No.</th></tr>'; 
      for(var i = 0; i < data.length; i++){ 
       program_host = data[i]; 
       html += '<tr><td>' + program_host.Program_Host_Name + '</td><td>' + program_host.Address_1 + ', ' + program_host.City + ', ' + program_host.State + '</td><td>' + program_host.Session_Number_Prefix + '</td><td>' + program_host.Agency_Number + '</td></tr>'; 
      } 

      $('#existing_program_hosts').append(html); 
     } 
    }, 
    error: function() { 
     //alert('Error'); 
     var html = ''; 

     html += '<tr><th>No Results</th></tr>'; 
     $('#existing_program_hosts').append(html); 
    } 
}); 

您的foreach之前声明$results = array();,如果避风港” t结果,(count($results)>0)将返回FALSEserver_response.results将为0.
您不需要parseJSON,只需在您的ajax函数中声明dataType: 'json'即可。

+0

这仍然没有解雇我。在我看来,如果结果为空,成功不会执行。但是,错误也没有做到。 – 2014-10-13 13:27:31

+0

你可以发布你的PHP代码返回?通常我使用一个变量来返回json,并添加一个索引'success'。 – Carlos 2014-10-13 13:48:16

+0

我用我的控制器的返回功能更新了我的原始帖子。谢谢您的帮助。 – 2014-10-13 14:29:04

1

就个人而言,我会做一些事情,如:

$('#Lookup').click(function() { 
var form_data = $('#validation-form').serializeArray(); 
var html = '<tr><th>No Results</th></tr>'; 

$.ajax({ 
    url: "<?php echo site_url('opportunity/search_existing_program_host'); ?>", 
    type: 'POST', 
    data: form_data, 
    cache: false, 
    success: function(server_response) { 
     var data = $.parseJSON(server_response); 
     var program_host; 

     if (server_response != null){ 
      html += '<tr><th>Program Host Name</th><th>Location</th><th>Session Prefix</th><th>Agency No.</th></tr>'; 
      for(var i = 0; i < data.length; i++){ 
       program_host = data[i]; 
       html += '<tr><td>' + program_host.Program_Host_Name + '</td><td>' + program_host.Address_1 + ', ' + program_host.City + ', ' + program_host.State + '</td><td>' + program_host.Session_Number_Prefix + '</td><td>' + program_host.Agency_Number + '</td></tr>'; 
      } 
     } 

    }, 
    error: function(e, textStatus) { 
     // perhaps you want something a little more custom here? 
     html += '<tr><th>' + textStatus + '</th></tr>'; 
    }, 
    complete: function(){ 
     $('#existing_program_hosts').append(html); 
    } 
}); 
+1

根据数据是否可以是一个空数组,如果(data!= null && data.length )' – cpburnz 2014-10-11 15:24:16

+0

当没有结果返回时,我仍然没有回应。错误功能不会触发。 – 2014-10-13 13:16:02