Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Php 通过AJAX传递数据以空值响应_Php_Ajax_Slim 3 - Fatal编程技术网

Php 通过AJAX传递数据以空值响应

Php 通过AJAX传递数据以空值响应,php,ajax,slim-3,Php,Ajax,Slim 3,向我的REST服务器传递额外的数据效果不太好 我有一个简单的ajax调用: // Client $(document).on('click', '#car', function(e){ e.preventDefault(); var name = $(this).data('name'); // Tesla var model = $(this).data('model'); // X $.ajax({ type: "GET",

向我的REST服务器传递额外的数据效果不太好

我有一个简单的ajax调用:

// Client
$(document).on('click', '#car', function(e){   
    e.preventDefault();
    var name  = $(this).data('name');    // Tesla
    var model = $(this).data('model');  // X
    $.ajax({ 
        type: "GET", 
        contentType: 'text',
        cache: false,   
        url: "http://server:80/api/v1/cars/" + name,
        data: JSON.stringify({
                "model": model
              }),         
        success: function(data, textStatus, jqXHR){ },
        error: function(jqXHR, textStatus, errorThrown){}                      
    });
});
问题是,在我的服务器上,
model
总是
NULL
,而
car
工作正常。我还
var\u转储了整个请求并搜索了
model
,但不幸的是,它不在那里

// Server
public function show($request, $response, $args)
{          
    $model = $request->getParsedBody()['model']; 
    $name  = $args['id'];

    echo $model;     // NULL
    echo $name;      // Tesla
}
我也不明白为什么我的请求URL在浏览器中的开发工具下看起来像这样:

http://server:80/api/v1/cars/Tesla.txt?{"model":"X"}

他将JSON放在请求url的末尾,我认为这不是一种标准行为?

尝试使用
data:{model:model}
而不是
JSON.stringify({“model”:model})
。查看更多信息

尝试使用
数据:{model:model}
而不是
JSON.stringify({“model:model})
。请参阅更多信息

以这种方式传递数据,数据:{model:JSON.stringify(model)}


以这种方式传递数据,数据:{model:JSON.stringify(model)}

为什么

get通常是一个查询字符串,其中数据通过URL传递,URL后附加变量,POST通过请求体传递数据,POST可以传递更多数据,然后get。在GET中,所有内容都必须是URL的一部分,不能在POST中添加更多数据。所有数据都必须通过邮件正文发送

尽可能基本

所以在php中有一个叫做
$\u请求的东西
在jave中,您将使用
request.getParameters
,它将自动为您处理它 此
$\u请求处理get和POST数据

为什么

get通常是一个查询字符串,其中数据通过URL传递,URL后附加变量,POST通过请求体传递数据,POST可以传递更多数据,然后get。在GET中,所有内容都必须是URL的一部分,不能在POST中添加更多数据。所有数据都必须通过邮件正文发送

尽可能基本

所以在php中有一个叫做
$\u请求的东西
在jave中,您将使用
request.getParameters
,它将自动为您处理它
这个
$\u请求
同时处理get和POST数据

我认为您不能以TYPe=get-try的方式传递数据POST@ReubenGomes将类型从GET改为POST很有效,但我想知道为什么。不幸的是,官方文件对此并不清楚。你可以发一个小帖子,我会接受你的回答。谢谢。Magiranu请检查以下内容。我不认为您可以通过TYPe=get-try传递数据POST@ReubenGomes将类型从GET改为POST很有效,但我想知道为什么。不幸的是,官方文件对此并不清楚。你可以发一个小帖子,我会接受你的回答。谢谢你,Magiranu请检查一下,我试过了,但运气不好。谢谢你输入Nouphal。我试过了,但运气不好。谢谢你输入Nouphal.我的错我把编辑放错地方了我忘了我的答案是评论我的错我把编辑放错地方了我忘了我的答案是评论
$(document).on('click', '#car', function(e){   
    e.preventDefault();
    var name  = $(this).data('name');    // Tesla
    var model = $(this).data('model');  // X
    model = JSON.stringify(model);

    $.ajax({ 
        type: "GET", 
        contentType: 'text',
        cache: false,   
        url: "http://server:80/api/v1/cars/" + name,
        data: {model:model},         
        success: function(data, textStatus, jqXHR){ },
        error: function(jqXHR, textStatus, errorThrown){}                      
    });
}); 
Your typical query String : http://example.com/over/there?name=ferret&sname=somethingelse

Yout would use $_GET['name'];

and For POST

URL:http://example.com/over/there
Message Body name=ferret&sname=somethingelse

$_POST['name'];