2

我没有得到任何输出 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();
                }

            ?>
4

3 回答 3

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'];
?>
于 2013-08-05T14:22:40.803 回答
2

推荐的方法是使用success函数来接收数据并分配您的 ID。从文档中

成功

类型:函数(PlainObject 数据,字符串 textStatus,jqXHR jqXHR)

您应该使用该data参数来获取您的 ID。


该代码与亚历山德罗的答案相同:

success: function(data){
    alert(data);
}
于 2013-08-05T14:24:30.000 回答
2

这将不起作用,因为 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
    }
});
于 2013-08-05T15:14:31.813 回答