繁体   English   中英

通过ajax post从js向php发送数据到php-错误

[英]sending data to php from js via ajax post - error

我正在尝试使用ajax将数据从我的js文件传递到php文件(如下所示)。

我检查了php错误日志,发现php无法识别我通过POST发送的数据(获取“试图获取非对象的属性”错误)。

如果我在引用$ json-> func的最后一行失败的话,我也在下面发布了我的php代码。

我做对了吗? 我已经看到了一些使用jquery的post函数的示例,但是我喜欢ajax方法的成功和错误,因此我一直在坚持下去。

感谢帮助:)

js:

 $.ajax({
            type: "POST",
            url: url,
            dataType : "json",
            data: {func:'getSummId' ,summName: summonerName},
            success: function(json){
                           //bla bla bla
           }
            error: function(){
                           //bla bla bla
           }

的PHP:

    <?php
        header("Content-Type: application/json", true);
        header("Access-Control-Allow-Origin: *");
        $client_data = file_get_contents("php://input");
        $json = json_decode($client_data);
        switch ($json->func) {
        ...

dataType是指返回的数据,而不是您如何发送数据。 因此,您的数据将在$_POST全局变量中,并且在这种情况下,使用php:// input将无法与json_decode一起使用

所以你可以使用

$func = $_POST['func'];
$summName = $_POST['summName'];

或者,您可以尝试在jQuery ajax请求中设置content type选项(尽管我从未尝试过这样做,所以您必须对其进行测试)

$.ajax({
    type: "POST",
    url: url,
    contentType: "application/json",
    dataType : "json",
    data: {func:'getSummId' ,summName: summonerName},

如果未设置contentType则默认为

application/x-www-form-urlencoded; charset=UTF-8

PHP自动将这种类型的请求解析为$ _GET / $ _ POST / $ _ REQUEST全局变量。 PHP本身并不知道如何自动解析发送给它的应用程序/ json请求。 因此,当要将请求数据作为json发送时,您必须自己阅读php://input

尝试更改:将method: "POST" type: "POST" method: "POST"

暂无
暂无

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

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