2016-11-15 23 views
1

我已經AJAX放置請求未將數據發送到服務器JQuery的阿賈克斯PUT請求不發送數據到服務器

handleUpdate(meal) { 
console.log(meal) 
var meals = this.state.meals; 
$.ajax({ 
    url: `api/v2/meals/${meal.id}`, 
    type: 'PUT', 
    date: {name: meal.name, calories: meal.calories, meal_time: meal.meal_time, meal_date: meal.meal_date}, 
    headers: window.Auth.retrieveData('authHeaders'), 
    success: (new_meal) => { 
    this.setState({ 
     meals: meals.map(meal => meal.id === new_meal.id ? new_meal : meal) 
    }) 
    }, 
    error: (response) => { 
    console.log(response); 
    } 
}); 

我在做什麼錯?

+1

你怎麼知道它沒有發送數據到服務器?您是否查看了Chrome調試器中的網絡選項卡跟蹤,以查看它實際發送的內容以及查看它將其發送到的URL?另外,除非你爲'$ .ajax()'函數設置'context'值,'this'的值不會是你在'success'處理器中所期待的。 – jfriend00

回答

3

我希望你有一個typo而不是data,你有date。請看下面的評論

handleUpdate(meal) { 
console.log(meal) 
var meals = this.state.meals; 
$.ajax({ 
    url: 'api/v2/meals/${meal.id}', 
    type: 'PUT', 
    // The below should be 'data' 
    date: {name: meal.name, calories: meal.calories, meal_time: meal.meal_time, meal_date: meal.meal_date}, 
    headers: window.Auth.retrieveData('authHeaders'), 
    success: (new_meal) => { 
    this.setState({ 
     meals: meals.map(meal => meal.id === new_meal.id ? new_meal : meal) 
    }) 
    }, 
    error: (response) => { 
    console.log(response); 
    } 
}); 
+0

就是這樣。非常感謝。 –

+0

@BhushanLodha不客氣:-) – Aruna

1

我注意到,在url您正在使用不同的單引號,請務必使用正確的單引號,這有時會發生。

正確的應該是'api/v2/meals/${meal.id}'

此外,請務必遵循一個很好的例子呼叫,以確保其他屬性都順利通過。