GET
:$.get(..)
POST
:$.post()..
เกี่ยวกับPUT/DELETE
อะไร
GET
:$.get(..)
POST
:$.post()..
เกี่ยวกับPUT/DELETE
อะไร
คำตอบ:
คุณสามารถใช้วิธีajax :
$.ajax({
url: '/script.cgi',
type: 'DELETE',
success: function(result) {
// Do something with the result
}
});
PUT
หรือDELETE
คำขอส่งคืนข้อผิดพลาด 404 คุณจะต้องเปิดใช้งานคำกริยาเหล่านี้ใน IIS ฉันพบว่านี่เป็นทรัพยากรที่ดี: geekswithblogs.net/michelotti/archive/2011/05/28/…
"The type of request to make ("POST" or "GET"), default is "GET". Note: Other HTTP request methods, such as PUT and DELETE, can also be used here, but they are not supported by all browsers."
จาก: api.jquery.com/jQuery.ajax/#options
method
หรือtype
$.ajax
จะทำงาน.
$.ajax({
url: 'script.php',
type: 'PUT',
success: function(response) {
//...
}
});
contentType: "application/json"
เราสามารถขยาย jQuery เพื่อสร้างทางลัดสำหรับ PUT และ DELETE:
jQuery.each( [ "put", "delete" ], function( i, method ) {
jQuery[ method ] = function( url, data, callback, type ) {
if ( jQuery.isFunction( data ) ) {
type = type || callback;
callback = data;
data = undefined;
}
return jQuery.ajax({
url: url,
type: method,
dataType: type,
data: data,
success: callback
});
};
});
และตอนนี้คุณสามารถใช้:
$.put('http://stackoverflow.com/posts/22786755/edit', {text:'new text'}, function(result){
console.log(result);
})
คัดลอกจากที่นี่
ดูเหมือนจะเป็นไปได้ด้วยฟังก์ชั่น ajax ของ JQueryโดยการระบุ
type: "put"
หรือ
type: "delete"
และไม่ได้รับการสนับสนุนโดยเบราว์เซอร์ทั้งหมด แต่ส่วนใหญ่
ลองดูคำถามนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความเข้ากันได้:
มีวิธี PUT, DELETE, HEAD และอื่น ๆ ในเว็บเบราว์เซอร์ส่วนใหญ่หรือไม่?
จากที่นี่คุณสามารถทำสิ่งนี้:
/* Extend jQuery with functions for PUT and DELETE requests. */
function _ajax_request(url, data, callback, type, method) {
if (jQuery.isFunction(data)) {
callback = data;
data = {};
}
return jQuery.ajax({
type: method,
url: url,
data: data,
success: callback,
dataType: type
});
}
jQuery.extend({
put: function(url, data, callback, type) {
return _ajax_request(url, data, callback, type, 'PUT');
},
delete_: function(url, data, callback, type) {
return _ajax_request(url, data, callback, type, 'DELETE');
}
});
โดยพื้นฐานแล้วมันเป็นเพียงแค่การคัดลอก$.post()
ด้วยพารามิเตอร์เมธอดที่ถูกดัดแปลง
นี่คือการโทรajax ที่อัปเดตเมื่อคุณใช้ JSON กับ jQuery> 1.9:
$.ajax({
url: '/v1/object/3.json',
method: 'DELETE',
contentType: 'application/json',
success: function(result) {
// handle success
},
error: function(request,msg,error) {
// handle failure
}
});
คุณควรจะสามารถใช้jQuery.ajax
:
โหลดเพจระยะไกลโดยใช้การร้องขอ HTTP
และคุณสามารถระบุวิธีที่ควรใช้พร้อมtype
ตัวเลือก :
ประเภทของคำขอที่จะทำให้ ("
POST
" หรือ "GET
") ค่าเริ่มต้นคือ "GET
"
หมายเหตุ: วิธีการร้องขอ HTTP อื่น ๆ เช่นPUT
และDELETE
ยังสามารถใช้ที่นี่ได้ แต่เบราว์เซอร์ทั้งหมดไม่ได้รับการสนับสนุน
PUT
หรือDELETE
ไม่ว่าเบราว์เซอร์ใดที่ไม่รองรับหรือ?
มองหาประเภทพารามิเตอร์
วิธีการร้องขอ HTTP อื่น ๆ เช่น PUT และ DELETE สามารถใช้ได้ที่นี่ แต่เบราว์เซอร์ทั้งหมดไม่ได้รับการสนับสนุน
สำหรับความกะทัดรัด:
$.delete = function(url, data, callback, type){
if ( $.isFunction(data) ){
type = type || callback,
callback = data,
data = {}
}
return $.ajax({
url: url,
type: 'DELETE',
success: callback,
data: data,
contentType: type
});
}
คุณสามารถทำได้ด้วย AJAX!
สำหรับPUT
วิธีการ:
$.ajax({
url: 'path.php',
type: 'PUT',
success: function(data) {
//play with data
}
});
สำหรับDELETE
วิธีการ:
$.ajax({
url: 'path.php',
type: 'DELETE',
success: function(data) {
//play with data
}
});
ฉันเขียนปลั๊กอิน jQuery ที่รวมโซลูชันที่กล่าวถึงที่นี่ด้วยการสนับสนุนข้ามเบราว์เซอร์:
https://github.com/adjohnson916/jquery-methodOverride
ลองดูสิ!
หากคุณต้องการที่จะทำให้$.post
การทำงานกับ Laravel Route::delete
หรือRoute::put
เพียงแค่เพิ่มการโต้แย้งหรือ"_method"="delete"
"_method"="put"
$.post("your/uri/here", {"arg1":"value1",...,"_method":"delete"}, function(data){}); ...
ต้องทำงานให้กับ Framework อื่น ๆ
หมายเหตุ: ทดสอบกับ Laravel 5.6 และ jQuery 3
คุณสามารถรวมรหัสแฮชของข้อมูลไว้ในคีย์: _method พร้อมค่า 'ลบ'
ตัวอย่างเช่น:
data = { id: 1, _method: 'delete' };
url = '/products'
request = $.post(url, data);
request.done(function(res){
alert('Yupi Yei. Your product has been deleted')
});
นอกจากนี้ยังจะใช้สำหรับ
นี่เป็นหนึ่งซับง่าย ๆ ที่ฉันใช้ใส่ตัวแปรมากกว่าหนึ่งตัว:
$.put("https://your-url.com",{item1:'new item1',item2:'new items2'});