Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript xmlhttprequest未发布到php文件_Javascript_Php_Apache_Xmlhttprequest_Http Post - Fatal编程技术网

Javascript xmlhttprequest未发布到php文件

Javascript xmlhttprequest未发布到php文件,javascript,php,apache,xmlhttprequest,http-post,Javascript,Php,Apache,Xmlhttprequest,Http Post,我试图通过javascript向本地托管的php文件发出post请求,但php文件似乎没有接收到数据或没有显示。 我尝试了各种方法来打印vardump print\u r$\u post$\u request raw\u http\u数据,但似乎没有任何效果 代码有什么问题? url有问题吗 这是javascript文件: const rightswipe = (n) =>{ var foo = "me"; var bar = "ft"

我试图通过javascript向本地托管的php文件发出post请求,但php文件似乎没有接收到数据或没有显示。 我尝试了各种方法来打印vardump print\u r$\u post$\u request raw\u http\u数据,但似乎没有任何效果

代码有什么问题? url有问题吗

这是javascript文件:

const rightswipe = (n) =>{
    var foo = "me";
    var bar = "ft";
    var xhr = new XMLHttpRequest();
    xhr.addEventListener("readystatechange", function() 
    {
        if(this.readyState === 4) 
        {
            if(this.status==200 || this.status==201)
            {
                //let newData = JSON.parse(this.responseText);
                //console.log(newData);
            }
            else{
                alert("invalid link");
            }
        }
    });
    xhr.open("POST", "like.php" , true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.send("to_user="+foo+"&from_user="+bar);

};
like.php是同一文件夹中的文件:

if (array_key_exists('foo', $_POST) && array_key_exists('bar', $_POST)) {
    
        $foo = $_POST['foo'];
        $bar = ($_POST['bar']);
        // do stuff with params
    
        echo 'Yes, it works!';
    
    } else {
        echo 'Invalid parameters!';
    }
另外$\u post和$\u请求也是空的; 而var_dump($_server[“REQUEST_METHOD”])返回“GET”
我用xampp ie apache和mysql在本地托管这个站点,我已经设置了一个测试,您的代码运行良好。我只看到一个问题,那就是您发布了“to_user”和“from_user”参数,但在PHP中检查了“foo”和“bar”键。因此,在我的测试中,我得到了预期返回的“无效参数”

注意:当前您的PHP正在返回文本,因此如果要取消对JSON.parse行的注释,可能会出现JavaScript错误。确保用PHP对您的响应进行json_编码

我不确定您的测试显示请求方法是“GET”,但怀疑它不是有效的测试,因为您显然发送了POST请求

更新以下讨论:

我安装了Windows 10上提到的相同XAMPP版本,并设置了基本文件,但仍然无法复制该问题

C:\xampp\htdocs\rightswipe.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

  <script src="rightswipe.js"></script>
</body>
</html>
C:\xampp\htdocs\like.php

<?php
if (array_key_exists('to_user', $_POST) && array_key_exists('from_user', $_POST)) {
    
        $foo = $_POST['to_user'];
        $bar = ($_POST['from_user']);
        // do stuff with params
    
        echo json_encode('Yes, it works!');
    
    } else {
        echo json_encode('Invalid parameters!');
    }

我已经设置了一个测试,您的代码运行良好。我只看到一个问题,那就是您发布了“to_user”和“from_user”参数,但在PHP中检查了“foo”和“bar”键。因此,在我的测试中,我得到了预期返回的“无效参数”

注意:当前您的PHP正在返回文本,因此如果要取消对JSON.parse行的注释,可能会出现JavaScript错误。确保用PHP对您的响应进行json_编码

我不确定您的测试显示请求方法是“GET”,但怀疑它不是有效的测试,因为您显然发送了POST请求

更新以下讨论:

我安装了Windows 10上提到的相同XAMPP版本,并设置了基本文件,但仍然无法复制该问题

C:\xampp\htdocs\rightswipe.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>

  <script src="rightswipe.js"></script>
</body>
</html>
C:\xampp\htdocs\like.php

<?php
if (array_key_exists('to_user', $_POST) && array_key_exists('from_user', $_POST)) {
    
        $foo = $_POST['to_user'];
        $bar = ($_POST['from_user']);
        // do stuff with params
    
        echo json_encode('Yes, it works!');
    
    } else {
        echo json_encode('Invalid parameters!');
    }


您是否检查了浏览器开发人员工具网络面板中的请求和响应?也许
rightswipe
永远不会出现called@JaromandaXrightswipe还包含其他css更改,我在这里没有包括这些更改,因为它们是不相关的。这些css更改正在发生,因此我可以向您保证正在调用rightswipe。@DamianDziaduch我在网络部分检查了它,请求方法显示POST,并且没有发出任何类型的错误输入:
xhr.send(“to_user=“+foo+”&from_user=“+bar”)
您的键被称为
给_user
从_user
foo
bar
(这是您正在寻找的:
$foo=$\u POST['foo'];
)您是否检查了浏览器开发人员工具网络面板中的请求和响应?也许
rightswipe
永远不会出现called@JaromandaXrightswipe还包含其他css更改,我在这里没有包括这些更改,因为它们是不相关的。这些css更改正在发生,因此我可以向您保证正在调用rightswipe。@DamianDziaduch我在网络部分检查了它,请求方法显示POST,并且没有发出任何类型的错误输入:
xhr.send(“to_user=“+foo+”&from_user=“+bar”)
您的键被称为
到用户
从用户
到非
foo
bar
(这是您正在寻找的:
$foo=$\uPost['foo'];
)谢谢@mark。我修复了from_user和to_user,但仍然不起作用;它仍然给出“无效参数!”。另外,vardump$\u POST和$\u REQUEST是空的。这告诉我,您的代码中还存在一些我们在这里看不到的问题,因为正如我所说的,我用提供的代码设置了一个测试,一旦我纠正了提到的两个问题,它就可以正常工作。在like.php中是否有更多我们没有看到的代码?您将vardump放在哪里,如何确认它们是空的?不,这就像.php包含的内容一样。我暂时把vardump放到confim$\u post是空的。另外,当我尝试创建表单时,$\u post显示结果当您测试此项时,您是在HTML上单击按钮或其他用户操作,还是直接调用rightswipe函数?如果您使用的是单击或类似操作,请尝试直接调用该函数:打开开发人员工具,并在控制台选项卡中输入
rightswipe(1)。在网络选项卡中,找到请求并检查调用的完整url是否正确。检查请求有效负载,确保它已发送给\u用户和从\u用户发送。你已经确认它是邮寄的。最后查看响应并共享响应负载。在执行此操作之前,请删除PHP代码中的任何转储。我正在单击一个按钮调用rightswipe。我试着像你说的那样用右击打电话,但还是不行。另外,我注意到在我发送请求的页面的网络面板中,其类型显示为xhr,请求方法显示为post。但是在接收页面上,类型是document,请求方法是get。我还将php.ini中的enable_post_data_读取从off更改为on,但没有任何帮助。谢谢@mark。我修复了from_user和to_user,但仍然不起作用;它仍然给出“无效参数!”。另外,vardump$\u POST和$\u REQUEST是空的。这告诉我,您的代码中还存在一些我们在这里看不到的问题,因为正如我所说的,我用提供的代码设置了一个测试,一旦我纠正了提到的两个问题,它就可以正常工作。在like.php中是否有更多我们没有看到的代码?你把vardump放在哪里?你怎么确认