2013-08-05 46 views
1

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

你必须等待AJAX​​调用来完成。 – m90

+0

你可以使用'.done(函数(数据){....})' –

回答

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 
    } 
}); 
+0

好的非常感谢生病尝试:D – jake

4

尝试,而不是这个,因为当你做出警告的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']; 
?> 
+0

谢谢@Alessandro Minoccheri虐待尝试:D – jake

+0

让我知道这是你想要的@jake –

+2

我同意这是更好的方法编写它,但考虑到调用正在同步执行,因为指定了'async:false'。也就是说,应始终使用异步调用,遵循此答案中的模式。 –

2

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

成功

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

您应该使用data参数,让您的ID。


的代码是一样的亚历山德罗的回答是:

success: function(data){ 
    alert(data); 
} 
+0

你可以发布整个示例脚本使用上面的iv真的很感谢和感谢很多 – jake