将$ .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

  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(); } ?> 

这不起作用,因为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 } }); 

请尝试这样做,因为当你发出警报时,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文件中,您可以在此模式下获取值:

  

建议的方法是使用success函数来接收数据并分配您的ID。 从文档 :

成功

类型:Function(PlainObject数据,String textStatus,jqXHR jqXHR)

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


代码与Alessandro的答案相同:

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