繁体   English   中英

AJAX将变量发布到PHP无法正常工作

[英]AJAX post variable to PHP not working

我正在尝试将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中输入“ eventID”时,它会正确显示该数字。

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

<?php

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

?>

但是什么也没发生。 console.log仅显示:“ Number:”代码是否有问题? 谢谢你的帮助!

编辑:难道是我单击按钮之前已经加载了index.php的问题吗? 由于此php代码位于index.php中,因此尚未设置$ phpEventId。

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

如果您使用的是最新的jQuery,但未指定method: "POST" ,则默认为method: "GET"并且您的PHP需要使用$_GET['phpEventId'];来捕获它$_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);
    }
});

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

<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响应中...

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

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

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

可能的解决方案今天可用

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM