将$ .ajax分配给变量

时间:2013-08-05 14:21:08

标签: javascript jquery ajax

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

            ?>

3 个答案:

答案 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
    }
});