【问题标题】:Passing a variable from JavaScript to PHP through AJAX通过 AJAX 将变量从 JavaScript 传递到 PHP
【发布时间】:2013-04-29 03:40:38
【问题描述】:

我正在尝试使用 AJAX 将 a 变量从 JavaScript 传递给 PHP,但我无法这样做。每当我尝试 var_dump($_POST['winner_id']) 时,它都会返回 NULL。我尝试使用 Chrome 中的开发人员工具检查 AJAX 调用,它显示 winner_id:0 - 这是正确的。

这是我的代码:

JavaScript

 function ajaxCall() {

   alert("To AJAX: the winnerid is: "+winner_id);

        $.ajax
        (   {


                type: "POST",
                url: "ajax.php",
                data: {winner_id : winner_id}, 
                success: function(response)
                { alert("The winner was passed!")}
            }
        );
};
ajaxCall();

PHP 代码

<?php 
session_start();

if(isset($_POST['winner_id']))

{
    $winner_id = $_POST['winner_id']."";
    var_dump($winner_id);
}

var_dump($_POST['winner_id']);

?>

如果我在 PHP 脚本的开头输入 var_dump($_POST),那么它会给出 array(0) { }

我是 Web 开发的新手,并且已经尝试了好几个小时。任何提示将不胜感激。谢谢!

【问题讨论】:

  • 嗯,如果您将实际的零传递给 PHP,您期望返回什么。您是否尝试使用一些易于识别的字符串来代替?
  • success 会被调用吗?
  • 我在调用 ajax 函数之前启动并计算了winner_id,并在其中使用了winner_id
  • winner_id$.ajax data..中的可能值是多少?
  • 是的,成功被称为

标签: php javascript ajax http-post web-development-server


【解决方案1】:

你在哪里初始化winner_id。要么你必须将它作为参数传递,要么将它初始化为一个全局变量。

function ajaxCall(winner_id) {

   alert("To AJAX: the winnerid is: "+winner_id);

        $.ajax
        ({
                type: "POST",
                url: "ajax.php",
                data: {"winner_id" : winner_id}, 
                success: function(response)
                  { 
                     alert("The winner was passed!");
                  }
        });
};
ajaxCall(winner_id);

【讨论】:

  • 谢谢迪普!我按照您给我的说明进行操作,确保我传入了作为函数的参数的winner_id,我可以看到它通过了结果,但是我仍然无法在我的 php 代码 var_dump($_POST ['winner_id'])= NULL
【解决方案2】:

您在哪里向winner_id 发起价值?喜欢

function ajaxCall() {
var winner_id = '123';
...

或者如果你在调用ajaxCall()之前启动了winner_id,你应该使用ajaxCall($winnerid)之类的参数调用ajaxCall(),其中$winnerid来自你的PHP 然后

function ajaxCall(winner_id) {
...

【讨论】:

  • 我尝试输入winner_id作为ajax函数的参数并调用成功,当我进入开发者工具/网络和XHR时,它显示winner_id = 1(这是正确的)
  • 所以如果我想你的初始值是$winnerid,只需调用像ajaxCall($winnerid)这样的函数。
  • 谢谢阿米尔,问题是我仍然无法在我的 php 代码中获取winner_id:var_dump($_POST['winner_id'])= NULL
  • 你确定,你的 PHP 代码在 ajax.php 的同一文件夹中吗?
  • 是的,肯定的! javascript 文件和 php 文件都在我的 apache2 上
【解决方案3】:

我猜你必须将你的winner_id 转换为字符串,因为 php 将零 (0) 读取为 null

function ajaxCall() {

   alert("To AJAX: the winnerid is: "+winner_id);

        $.ajax
        (   {


                type: "POST",
                url: "ajax.php",
                data: {winner_id : winner_id.toString()}, 
                success: function(response)
                { alert("The winner was passed!")},
                dataType: "json"
            }
        );
};
ajaxCall();

【讨论】:

  • 感谢winner_id.toString() 的想法。我实现了它,但是我仍然无法在我的 php 脚本中得到它
  • 没有必要,除非您将 ajax 的响应作为 json @Charlene Lauron 给出
  • hmm 但该函数正在将 json 数据传递给 php,好的,我会测试它.. 谢谢@Deepu
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
相关资源
最近更新 更多