【问题标题】:Simple jquery post variable sending简单的jquery post变量发送
【发布时间】:2014-12-23 02:12:21
【问题描述】:

我对这部分代码有一些问题:

<script>
function komenty(photoid) {
    var xmlhttp=new window.XMLHttpRequest();
    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            var x = xmlhttp.responseText;
            $.post('main.php', {x: "foo"});
        }
    }
    xmlhttp.open("GET", "comments.php?id=" + photoid, true);
    xmlhttp.send();
}
</script>

我正在尝试将此变量发送到我在同一页面上的 php 脚本,即 main.php responseText 不为空,里面的字符串很少。 但在我的 php 脚本中,它说“变量 x 未定义”

<?php
echo "<a href='#' class='my-button' onclick='komenty(".$photoid.")'>komentarze</a>";
$x = $_POST['x'];
echo $x;
?>

我不确定我是否清楚了解 jquery 手册

【问题讨论】:

  • 如果更改为{x: "foo"}会怎样?
  • @Barmar 同样:“注意:未定义的索引:/main.php 中第 627 行的 x”
  • 未定义的索引通常与 POST 变量相关联,并且没有 name 属性和/或表单元素的 id。
  • @Fred-ii- 他没有使用表单,他使用的是 AJAX。
  • 有什么方法可以让您执行main.php 而不通过$.ajax 调用?您是否曾经使用浏览器直接访问过脚本?

标签: php jquery variables post


【解决方案1】:

您应该为 AJAX 调用使用与显示主页不同的脚本。或者main.php 脚本需要检查它是使用GET 还是POST 调用的。

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Respond to AJAX call
    $x = $_POST['x'];
    echo $x;
} else {
    // Display normal HTML
    echo "<a href='#' class='my-button' onclick='komenty(".$photoid.")'>komentarze</a>";
}

【讨论】:

  • else 正在执行,但我不确定如何使用该信息:D
  • 很高兴看到解决方案。好样的。
  • @Fred-ii- 嗯,这表明变量没有通过 POST 对吗?那么它去哪儿了XD
  • @asdasdasd 那,我不能告诉你。问巴尔玛 ;-)
  • @asdasdasd 当您在浏览器中加载页面时,这是一个GET 请求,而不是POST。您可以使用$_GET['paramname'] 访问 URL 参数,例如main.php?foo=bar 将设置为 $_GET['foo']
猜你喜欢
  • 1970-01-01
  • 2014-01-20
  • 2012-08-02
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多