2017-10-28 79 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

我不好,我把編輯在錯誤的地方,我忘了我的回答是評論 –