0

$.post我正在尝试使用带有中间 php 脚本的JQuery 将动态隐藏输入的值发布回同一页面。正确的值被返回并显示在下面代码中的警报中,但我无法通过以下方式获取页面中的值$_POST

$(document).ready(function() {

$('.case').click(function() {  
var caseId = $(this).find('input:hidden').val();
$.post("scripts/get_case.php", { case_pk: caseId },
   function(data) {
     alert("Respond: " + data);
   }); 
});

在同一页面上:

$caseId = $_POST['case_pk'];

echo $caseId;

中介 php 页面(get_case.php):

<?php
$case = $_POST['case_pk'];
echo $case;
?>

场景是:

cases我有 div 按钮,这些按钮是根据页面中 mysql db 中的数量动态生成的vmd.php。这些动态生成的 div 按钮中的每一个都包含一个隐藏输入,其中包含相应的 case id ( case_pk) 值。单击其中一个按钮时,我想运行基于案例 ID 的 mysql 查询vmd.php。所以我的理解是我需要case_pk通过 ajax 将隐藏字段传递回同一页面(vmd.php)并将其放入我可以在查询中使用的 php 变量中。

4

2 回答 2

1

我认为您的“帖子”类似于

<input id="case_pk" name="case_pk" type="hidden" value="">

所以在成功的过程中你应该:

$('#case_pk').value(data);

为了“重置/更改”该隐藏输入的值。

于 2013-07-05T12:39:35.453 回答
1

不完全清楚您打算将值发布到哪个页面,因为两个 PHP 示例中的第一个似乎没有被任何东西使用。然而,这两个例子中的第二个似乎是有效的。您正在成功地对另一个服务器端资源 ( get_case.php) 执行 AJAX POST,该资源成功接收该值并回显相同的值(鉴于客户端alert()行为符合预期的描述)。

因此,在这种情况下,您的服务器端功能可以由 启动get_case.php,然后可以将任何相关响应发送回页面并由回调函数中的客户端代码处理(您当前有一个alert())。

请记住,不必将值 POST 到“当前页面”。您可以 POST 到任何服务器端资源。实际上,您可能会发现最好将您的服务器端资源分隔在产生 UI 的页面(在本例中为“当前页面”)和更像是用于 AJAX 调用并仅返回数据的 Web 服务的页面(get_case.php在本例中) . 这可以使组织代码变得更加容易,而无需使用杂乱的条件来确定是否应该呈现 UI 或 JSON。

所以一个成功的操作顺序可能是这样的:

  1. page1.php用户在他们的浏览器中加载。
  2. page1.php执行一些服务器端操作并呈现 UI。
  3. 在 UI 中有 JavaScript 代码,它可以 AJAX 调用page2.php.
  4. page2.php执行一些服务器端操作并呈现 JSON 数据。
  5. JavaScript 代码接收 JSON 数据并执行一些客户端操作。
于 2013-07-05T12:25:54.013 回答