2017-10-28 42 views
0

将其他数据传递到我的REST服务器时效果不佳。通过AJAX传递数据以NULL值响应

我有这个简单的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_dumped整个要求和搜查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的末尾,我觉得这是不是一个标准的行为?

+0

我不要以为你可以在TYPe中传递数据= get test POST –

+0

@ReubenGomes从GET更改POST类型的工作,但我想知道为什么。官方文件并不是真的,不幸的是,明确的。你可以写一个小贴子,我会接受你的答案。谢谢。 – Magiranu

+0

Magiranu请检查以下 –

回答

1

为什么

通常得到的是一个查询字符串,其中数据通过带有变量的URL传递给URL和POST,数据通过请求体传递POST可以传递更多数据然后GET。在得到的一切必须是网址中没有更多的数据可以在POST加入一部分的所有数据都有throught邮件正文

发送为基本,因为它得到

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']; 

所以在PHP你有一些所谓的java的$_REQUEST; 你会使用request.getParameters将自动为您处理这个 手柄$_REQUEST GET和POST数据

0

传递这样的数据,数据:{模式:JSON.stringify(模型)},

$(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){}      
    }); 
}); 
+0

我不好,我把编辑在错误的地方,我忘了我的回答是评论 –