我有一个问题。从php-function接收数据到ajax。
Ajax(在html文件中):
function showUser(name) {
$.ajax({
type: 'POST',
url: '/api.php',
data: {
name : "\""+name+"\"",
func_id : "1"
},
dataType: 'json',
success: function(data)
{
if (data == null) {
console.log("Something went wrong..");
} else {
console.log(data);
Php(单独的php文件):
<?php
error_reporting(E_ALL);
//MySQL Database connect start
$host = "localhost";
$user = "root";
$pass = "root";
$databaseName = "TFD";
$con = mysqli_connect($host, $user, $pass);
if (mysqli_connect_errno()) {
echo "Failed to connect to database: " . mysqli_connect_error();
}
$dbs = mysqli_select_db($con, $databaseName);
//MySQL Database connect end
$func_id = $_POST['func_id'];
function showUser() {
global $con;
$name = $_POST['name'];
$sql = "SELECT * FROM users WHERE first_name=$name";
$result = mysqli_query($con, $sql);
$array = mysqli_fetch_row($result);
mysqli_close($con);
echo json_encode($array);
}
if ($func_id == "1") {
showUser();
}
?>
问题:如果我没有php中的showUser-function,那么一切都有效,即如果我在&#34;中有所有php代码,我会收到正确的输出到ajax。根&#34;直接,但是当我把这个部分放在一个函数中时,我没有把任何东西发送到ajax。 Chrome中的网络面板显示来自sql的正确查询,因此$ array包含正确的数据,但我没有在ajax中收到它。 有没有解决这个问题? 谢谢!
答案 0 :(得分:0)
原因可能是函数内部的变量仅对函数本身可见。试试这个:
$name = $_POST['name'];
function showUser($name) {
global $con;
$sql = "SELECT * FROM users WHERE first_name=$name";
$result = mysqli_query($con, $sql);
$array = mysqli_fetch_row($result);
mysqli_close($con);
echo json_encode($array);
}
注意:如果您使用'mysql_escape_string'来阻止sql注入,请不要忘记先连接到db,否则'mysql_escape_string'将返回空字符串。