Ajax:在没有回显的情况下将 PHP 变量发送到 JS?

Rob*_* S. 5 html javascript php ajax jquery

我对 PHP 和 Ajax 都很陌生,所以这可能看起来微不足道,尽管我似乎找不到明确的答案。

我正在使用 ajax 向 process.php 发送查询,然后在页面上显示结果。我的工作正常,一切正常:

$.ajax({
   type: "POST",
   url: "process.php",
   data: { 'data1': yada, 'data2': yadayada},
   beforeSend: function(html) {
      $("#some-div").html('<p>loading</p>');
   },
   success: function(html){
      $("#some-div").html(html);
   }
});
Run Code Online (Sandbox Code Playgroud)

现在,这是有效的,因为我基本上是在 process.php 的末尾回显查询结果,然后显示在 #some-div 中。问题是,我还想检索一些在 PHP 中处理过的数据,以便在我的 JS 中使用它。但是,我不想在 PHP 的末尾回显这些数据,因为我不想在 #some-div 中显示它。

换句话说,说我的 process.php 看起来像这样:

$var1 = "hello world";
$var2 = "It's sunny outside";
$var3 = ["key1"=>"one", "key2"=>"two", "key3"=>"three"];

$result = $var1 . $var3["key2"];
echo $result;
Run Code Online (Sandbox Code Playgroud)

$result 显示在#some-div 中,这很好。但是如果我想做一个美妙的 alert(); 在 JS 中使用 $var3["key3"] 的内容而不在 #some-div 中显示它?

我应该进行另一个查询(这似乎不方便且效率低下),还是有办法将数据从 process.php 传递到 JS 而不回显它?

谢谢!

MrC*_*ode 2

将数据输出为JSON,以便您可以拥有单独的部分或变量:

$response = array('result' => $result, 'otherData' => $var3);
echo json_encode($response);
Run Code Online (Sandbox Code Playgroud)

JavaScript:

$.ajax({
   type: "POST",
   url: "process.php",
   data: { 'data1': yada, 'data2': yadayada},
   dataType : 'json', // <-- tell jQuery to parse the JSON
   beforeSend: function(html) {
      $("#some-div").html('<p>loading</p>');
   },
   success: function(response){
      alert( response.otherData.key3 );
      $("#some-div").html(response.result);
   }
});
Run Code Online (Sandbox Code Playgroud)