-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,但整個項目是建立與此,我不能改變它
凡'$ db'從何而來這裏...? – deceze
您是否在文件的頂部包含$ db? – Yamaha32088
它是所有項目中的全局變量。 –