首先,有三个文件:
order.html
get_order.php
name_id_convert.library.php
order.html中,使用post或者ajax请求get_order.php,来获得数据库信息。两个函数都测过,一样的效果,这是我的ajax,再次强调位于order.html的ready()内
$.ajax({
type:'POST',
url:"get_unfinished_business_order.php",
success:
function(response)
{ alert("ss");
var i;
var responseelement;
var create_tr;
var create_td;

for(i=0;i<response.length;i++)
{
responseelement=response[i];
create_tr = document.createElement("tr");

create_td = document.createElement("td");
create_td.innerHTML = responseelement.record_time;
create_tr.prepend(create_td);

create_td = document.createElement("td");
create_td.innerHTML = responseelement.required_delivery_date;
create_tr.prepend(create_td); create_td = document.createElement("td");
create_td.innerHTML = responseelement.amount;
create_tr.prepend(create_td);

create_td = document.createElement("td");
create_td.innerHTML = responseelement.customer_product_name;
create_tr.prepend(create_td);

create_td = document.createElement("td");
create_td.innerHTML = responseelement.order_number;
create_tr.prepend(create_td);

create_td = document.createElement("td");
create_td.innerHTML = responseelement.order_date;
create_tr.prepend(create_td);

create_td = document.createElement("td");
create_td.innerHTML = responseelement.customer_company_name;
create_tr.prepend(create_td); $("tr#buttons").before(create_tr);
}
},
dataType:"json",
error:function(){alert("fff");}
})
get_order.php
中,如果用include/require_once  name_id_convert.library.php从mysql获得数据,success不执行,error执行;如果注释掉include/require_once,success执行。
[get_order.php] include("name_id_convert.library.php");
//将公司ID  转换成  公司名字
function convert_customer_id_to_company_name_abbreviation(PDO $pdo,int $company_id)
{
$query = "select name_abbreviation from customers where id = '$company_id';";
$result = $pdo->query($query);
$customer_row = $result->fetch(PDO::FETCH_ASSOC);
return $customer_row['name_abbreviation'];
}
try
{
$sadb = new PDO('mysql:host=localhost;dbname=satest','sastest','121212');
}
catch (PDOException $exception)
{
printf("Connection error:<br />%s",$exception->getMessage());
}

$sadb->exec("set names utf8;"); $query = "select customer_id,order_date,order_number,customer_product_name,amount,required_delivery_date,record_time from business_orders where complete=0;";

$result = $sadb->query($query);
$orders=array();

$order_row_amount=0;
while($order_row = $result->fetch(PDO::FETCH_ASSOC))
{
//convert_customer_id_to_name
$abbreviation=convert_customer_id_to_company_name_abbreviation($sadb,$order_row['customer_id']);
$orders[$order_row_amount]['customer_company_name']=$abbreviation;
$orders[$order_row_amount]['order_date']=$order_row['order_date'];
$orders[$order_row_amount]['order_number']=$order_row['order_number'];
$orders[$order_row_amount]['customer_product_name']=$order_row['customer_product_name'];
$orders[$order_row_amount]['amount']=$order_row['amount'];
$orders[$order_row_amount]['required_delivery_date']=$order_row['required_delivery_date'];
$orders[$order_row_amount]['record_time']=$order_row['record_time'];
$order_row_amount++;
//printf("%s,%s,%s,%s,%d,%s,%s<br/>",$abbreviation,$order_row['order_date'],$order_row['order_number'],$order_row['customer_product_name'],$order_row['amount'],$order_row['required_delivery_date'],$order_row['record_time']);
} echo json_encode($orders);name_id_convert.library.php的内容,是一个get_order.php并不会调用到的函数: //将公司名  转换成  公司ID
function convert_customer_company_name_to_id(PDO $pdo,string $company_name)
{
$query = "select id from customers where name = '$company_name';";
$result = $pdo->query($query);
$customer_row = $result->fetch(PDO::FETCH_ASSOC);
$customer_id = $customer_row['id'];

printf("$company_name:$customer_id <br />"); if(empty($customer_id))
return 0;
else
return (int)$customer_id;
}
PLUS:
如果将convert_customer_id_to_company_name_abbreviation,写入name_id_convert.library.php,再被get_order.php包含,ajax照样会error
请大神出来解释下,这是什么原因,
请大神指点下,如何成功的使用include或require_once来包含库文件,并使ajax调用成功。因为一个一个地把库文件添加进去代码重用率太低了。

解决方案 »

  1.   

    如果注释掉include/require_once,success执行。
    显然是被嵌入的文件有问题!
      

  2.   

    感谢版主。
    但是如果我直接测试这个php,返回的json数组是正确的。如下图而且php里面include的那个文件,内容是一个并不会掉用到的函数。
    如果把这个文件清空,将被调用函数移动到include文件里面,还是一样的结果。
      

  3.   


    感谢版主。
    但是如果我直接测试这个php,返回的json数组是正确的。如下图而且php里面include的那个文件,内容是一个并不会掉用到的函数。
    如果把这个文件清空,将被调用函数移动到include文件里面,还是一样的结果。、
      

  4.   

    你没有检查是否是 BOM 头的影响吗?
      

  5.   


    确实是大神,如你所说:
    我使用notepad++开发,将文件转换成“UTF-8 无BOM格式编码”后,成功include。