2014-02-09 43 views
-3

我有一个连接到Mysql DB的函数,它在“正常”调用中工作得很好,但无法连接以响应ajax调用。php连接到mysql db在ajax调用后失败

PHP代码:

// return data to ShowDdl() 
    function getDDLdata($tablename) { 

    global $db; 
    $data = ''; 

    $name = ($tablename == 'sapak' || $tablename == 'cupon' ? 'Name' : 'Hebrewname'); 
    ////****** $db IS NOT RECOGNIZED WHEN CALLING ShowDdl() FROM AJAX 
    ////****** BUT WORKS GREAT IN NORMAL CALLS 
    $query = $db->select("SELECT `id` , `".$name."` AS name FROM `".$tablename."` ORDER BY `id` ASC"); 

    for($i=0;$result = $db->get_row($query, 'MYSQL_ASSOC');$i++){ 
     $data[$i] = $result; 
    } 

    return $data; // id, name 
} 

// echo ddl with current data from requested table 
    function ShowDdl($tablename, $sapakid = null) { 
     $possibletables = array (
      'category', 'subcategory', 'brand', 'sapak', 'cupon' 
    ); 

    $ddlname = ''; 

// find the correct name for the ddl  
for ($i = 0; $i<count($possibletables); $i++) {  

    if ($possibletables[$i] == $tablename) {    
     // only cupon ddl should have different id and name 
     if ($tablename == 'cupon') { 
      $ddlname = 'sapak-'.$sapakid .'-cupon'; 
     } 
     else { 
      $ddlname = 'product-' . $tablename; 
     } 

     continue; 
    }   
} 

echo '<select multiple id="'.$ddlname.'" name="'.$ddlname.'[]">'; 

$data = getDDLdata($tablename);  

foreach ($data as $vn) { 

    if ($vn['id'] != null) { 
     echo '     
      <option value="'.$vn['id'].'"> '.$vn['name'].' </option> 
      '; 
    } 
}  
echo '</select>';   

}

从 '正常' PHP调用时,它的伟大工程。

AJAX调用:

$.ajax({ 
     type: "GET", 
     url: 'moudels/product/generic_offer.php', 
     data: 'sid=' + sid + '&name=' + name,           
     success: function (data) { 
      $('<div id='+ sid + '> </div>').appendTo('#genericofferdiv'); 
      // append the response to the new div 
      $("#"+sid).html(data); 
     } 
    }); 

我得到这个错误:

Fatal error: Call to a member function select() on a non-object 

我敢肯定,这是因为Ajax调用,也许它无法正确加载全局的$ DB变种。任何想法如何解决这个问题?

非常感谢您

*注:我知道,我使用mysqli,但整个项目是建立与此,我不能改变它

+2

凡'$ db'从何而来这里...? – deceze

+0

您是否在文件的顶部包含$ db? – Yamaha32088

+0

它是所有项目中的全局变量。 –

回答

0

当你调用/包括从该文件在你的php项目中,你可能定义了全局变量$ db,并且可以在这个文件中访问它。

但是,如果你从你的网站调用这个,所有的php已经通过并且没有全局变量存在了... - >所以你必须包括f.e. config.php再次定义你的$ db变量!

的config.php:

$db = new mysqli(DB_HOST, DB_USER, DB_PW, DB_DB); 

yourFile.php

require_once('./config.php');