AJAX post变量到PHP无法正常工作

时间:2015-11-03 18:00:53

标签: javascript php jquery ajax

我正在尝试将jQuery变量添加到PHP变量中。我查了一下却无法找到解决方案。我有以下jQuery:

$('.eventRow').click(function(){

    var eventID = $(this).attr('id');

    $.ajax(
        {
        url: "index.php",
        type: "POST",

        data: {'phpEventId': eventID },
        success: function (result) {
                console.log('success');
        }
    });

当我在console.log te" eventID"它正确显示数字。

我的PHP代码在index.php中。这也是.eventRow类的位置。

<?php

  $phpEventId = $_POST['phpEventId'];
  echo "<script>console.log('Nummer: ".$phpEventId."')</script>";
  print $phpEventId;

?>

然而没有任何反应。 console.log只显示:&#34; Number:&#34;代码有问题吗?谢谢你的帮助!

编辑:在点击按钮之前,是否已经加载了index.php的问题?因为这个php代码在index.php中,因此$ phpEventId尚未设置。

3 个答案:

答案 0 :(得分:2)

在您的Ajax中,type: "POST"适用于1.9.0之前的jQuery。如果您使用的是最新的jQuery,请使用method: "POST"

如果您使用的是最新的jQuery但未指定method: "POST",则默认为method: "GET",您的PHP需要使用$_GET['phpEventId'];来捕获它。

阅读完更新后,让我们尝试一件事。更改PHP以返回对Ajax有意义的内容:

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

然后尝试在Ajax中捕获PHP响应:

$.ajax({
    url: "index.php",
    method: "POST",
    data: {'phpEventId': eventID },
    success: function (result) {
        alert("result: " + result);
    }
});

答案 1 :(得分:0)

这只是代码的一部分,问题出在其他地方。在这种情况下,您的代码可以正常工作:

<div class="eventrow" id="1">This</div>
<div class="eventrow" id="2">That</div>
<script>
$('.eventRow').click(function(){

    var eventID = $(this).attr('id');

    $.ajax(
        {
        url: "index-1.php",
        type: "POST",

        data: {'phpEventId': eventID },
        success: function (result) {
                console.log('success: '+eventID);
        }
    });
});
</script>

匹配index-1.php:

<?php

  $phpEventId = $_POST['phpEventId'];
  echo "<script>console.log('Nummer: ".$phpEventId."')</script>";
  print $phpEventId;

?>

不确定为什么你在这里将javascript代码(console.log)打印成ajax响应......

答案 2 :(得分:0)

即使在这里也可以看到错误

根据WebZed回合统计报告,此错误在84%的Web开发人员中可见。

  

在更新框架和代码时,无法通过JQuery将数据发布到PHP。

今天可能提供的解决方案

  1. 请尝试使用其他发布方法,因为JQUERY和AJAX库的效率不如调查所示。
  2. 可以使用新框架,这些框架可以更好地使用PHP。
  3. 替代方法是通过$ _GET方法创建发布请求。
  4. 常规HTML5支持<form></form>试试method="post"出于安全原因,请尝试使用enctype =“”命令。

尝试使用React Native https://nativebase.io/