2017-03-14 67 views
1

我正在尝试查询SQL Server数据库并在屏幕上返回结果。我的页面按其应该加载,但是当我按下按钮来查询SQL Server时,如果我查看控制台,它会显示500错误。PHP抛出500错误

我需要更改哪些内容才能根据需要在屏幕上返回有效结果?

<select name="peopleinfo[]" multiple style="min-width: 200px;" id="peopleinfo"> 
    <option value="red">Red</option> 
    <option value="blue">Blue</option> 
</select> 
<div><input type="submit" value="Submit" id="ajaxButton" onclick="ReturnIt()"></div> 
    <div id="result_data"></div> 
<script> 
    function ReturnIt(){ 
    var peopleinfo = $('#peopleinfo').val(); 
    jQuery.ajax({    
       url: "", 
       type: 'POST', 
       dataType: "html", 
       data: { peopleinfo: peopleinfo }, 
       success : function(result) { 
        $('#result_data').empty(); 
        $('#result_data').append(result); 
       } , 
       error: function(){ 

       } 
     }); 
    } 
    </script> 
    $peopleinfo = implode(',',$_REQUEST['peopleinfo']); 
    $option = array(); //prevent problems 

    $option['driver'] = 'mssql';   // Database driver name 
    $option['host']  = 'Lockwood'; // Database host name 
    $option['user']  = 'root';  // User for database authentication 
    $option['password'] = 'sa'; // Password for database authentication 
    $option['database'] = 'test';  // Database name 
    $option['prefix'] = '';    // Database prefix (may be empty) 

    $db = JDatabase::getInstance($option); 
    $result = $db->getQuery(true); 
    $result->select($db->quoteName(array(".$peopleinfo."))); 
    $result->from($db->quoteName('[redheadstepchild]')); 
    $db->setQuery($result); 
    $row = $db->loadRowList(); 
    print_r($row); 

编辑
这就是开发者控制台中显示
在这条线jquery-1.12.4.js:10254

一个错误,这是实际的语法,当我点击

// Do send the request 
// This may raise an exception which is actually 
// handled in jQuery.ajax (so no try/catch here) 
xhr.send((options.hasContent && options.data) || null); 
+0

该错误的原因应该在你的HTTP服务器的错误日志 – Phil

+0

显示我没有对服务器的访问日志:0( – IcyPopTarts

+1

是这个代码运行在Joomla环境或Joomla环境之外,如果在Joomla环境中运行,那么为什么又要提供数据库细节,为什么不使用'$ db = JFactory :: getDbo();'从哪里得到这个'[redheadstepchild ]'。 –

回答

0

你好,我做了一个模块来完成你在做什么,它运作良好。我会把这个例子放在这里可以帮助你。

模块:

<?php 
defined('_JEXEC') or die; 

include_once __DIR__ . '/helper.php'; 

// Instantiate global document object 
$doc = JFactory::getDocument(); 

$js = <<<JS 
(function ($) { 
    $(document).on('click', 'input[type=submit]', function() { 
     var value = $('input[name=data]').val(), 
      request = { 
        'option' : 'com_ajax', 
        'module' : 'ajax_search', 
        'data' : value, 
        'format' : 'raw' 
       }; 
     $.ajax({ 
      type : 'POST', 
      data : request, 
      success: function (response) { 
       $('.search-results').html(response); 
      } 
     }); 
     return false; 
    }); 
})(jQuery) 
JS; 

$doc->addScriptDeclaration($js); 

require JModuleHelper::getLayoutPath('mod_ajax_search'); 
?> 

助手:

<?php 
defined('_JEXEC') or die; 

class modAjaxSearchHelper 
{ 
    public static function getAjax() 
    { 
     include_once JPATH_ROOT . '/components/com_content/helpers/route.php'; 

     $input = JFactory::getApplication()->input; 
     $data = $input->get('data', '', 'string'); 

$db = JFactory::getDbo(); 
     $query = $db->getQuery(true); 


     // Build the query 
     $query 
      ->select($db->quoteName(array('id','name','email'))) 
      ->from($db->quoteName('#__banner_clients')) 
      ->where($db->quoteName('name') . ' LIKE '. $db->quote('%' . $data . '%')); 
      //->order('id ASC'); 


     $db->setQuery($query); 
     $results = $db->loadObjectList(); 


     // Get output 
     $output = null; 

     foreach($results as $result){ 
      $output .= '<h4><a href="' . ContentHelperRoute::getArticleRoute($result->id, $result->email) . '">' . $result->name . '</a></h4>'; 
     } 

     if($output == null or empty($data)) 
     { 
      $output = 'Sorry! No results for your search.'; 
     } 

     return $output; 
    } 
} 
?> 
0

我有添加了一个try和catch异常,这将返回与您的查询

$peopleinfo = implode(',',$_REQUEST['peopleinfo']); 
$option = array(); //prevent problems 

$option['driver'] = 'mssql';   // Database driver name 
$option['host']  = 'Lockwood'; // Database host name 
$option['user']  = 'root';  // User for database authentication 
$option['password'] = 'sa'; // Password for database authentication 
$option['database'] = 'test';  // Database name 
$option['prefix'] = '';    // Database prefix (may be empty) 

try{ 
$db = JDatabase::getInstance($option); 
$result = $db->getQuery(true); 
$result->select($db->quoteName(array(".$peopleinfo."))); 
$result->from($db->quoteName('[redheadstepchild]')); 
$db->setQuery($result); 
}catch(Exception $e){ 
echo $e->getMessage(); 
} 
$row = $db->loadRowList(); 
print_r($row); 
+0

屏幕上没有错误回显。如果我打开开发控制台它只显示500错误。 – IcyPopTarts