我没有得到任何输出id_function.php工作得很好可以有人请帮帮我吗?
的JavaScript
function get_details()
{
var oriz = document.getElementById("from").value;
var dizz = document.getElementById("to").value;
var id_orig_diz = $.ajax({
type: "POST",
url: 'id_function.php?orig='+oriz+'&des_id='+dizz,
dataType: "text",
async: false
}).responseText;
alert(id_orig_diz);
}
这是我的PHP,但我没有得到任何ID
<?php
$name_1 = $_GET['orig'];
$name_2 = $_GET['des_id'];
try {
$dbuser = "kim";
$dbpass = "kim";
$conn = new PDO('mysql:host=localhost;dbname=destination', $dbuser, $dbpass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT pl_id FROM view_places WHERE name = :name LIMIT 1");
$stmt->bindParam(':name',$name_1);
$stmt->execute();
$result_1 = $stmt -> fetch();
$res1 = $result_1["pl_id"];
$stmt->bindParam(':name', $name_2);
$stmt->execute();
$result_2 = $stmt -> fetch();
$res2 = $result_2["pl_id"];
echo 'origin_number:'.$res1. ', '.'destination_id:'.$res2;
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
?>
答案 0 :(得分:3)
尝试这样做,因为当你发出警报时,ajax调用还不能完成。使用suucess函数你可以确保ajax调用已经完成,如果你想要一个响应,你必须在php文件中回显:
$.ajax({
type: "POST",
url: 'id_function.php',
dataType: "text",
data: { 'orig': oriz, 'des_id' : dizz },
async: false,
success: function(data){
alert(data);
}
})
在您的php文件中,您可以在此模式下获取值:
<?php
$orig = $_POST['orig'];
$des_id = $_POST['des_id'];
?>
答案 1 :(得分:2)
推荐的方法是使用success
函数接收数据并分配您的ID。来自the documentation:
成功
类型:函数(PlainObject数据,字符串textStatus,jqXHR jqXHR)
您应该使用data
参数来获取您的ID。
代码与Alessandro的答案相同:
success: function(data){
alert(data);
}
答案 2 :(得分:1)
这不起作用,因为AJAX调用是异步的,这意味着它们在执行后不会立即返回值。它必须转到服务器,让服务器端代码运行,然后提供一个值。可以认为它在许多方面类似于用另一种语言开始一个线程;你必须等待线程将控制权交还给你的应用程序。
var id_orig_diz = $.ajax({
type: "POST",
url: 'id_function.php?orig='+oriz+'&des_id='+dizz,
dataType: "text",
async: false
}).responseText;
您需要做的是设置如下的结果处理程序:
var id_orig_diz;
$.ajax({
type: "POST",
url: 'id_function.php?orig='+oriz+'&des_id='+dizz,
dataType: "text",
async: false,
success: function(data){
id_orig_diz = data; //or something similar
}
});