Podążyłem za tutorialem jak podano w tym linku. W poniższym kodzie z jakiegoś powodu dane nie są dołączane do adresu url jako parametry, ale jeśli ustawię je bezpośrednio w adresie url za pomocą /?field1="hello"
to działa.
$.ajax({
url: 'superman',
type: 'POST',
data: { field1: "hello", field2 : "hello2"} ,
contentType: 'application/json; charset=utf-8',
success: function (response) {
alert(response.status);
},
error: function () {
alert("error");
}
});
Zalecałbym użycie składni $.post
lub $.get
jQuery dla prostych przypadków:
$.post('superman', { field1: "hello", field2 : "hello2"},
function(returnedData){
console.log(returnedData);
});
Jeśli potrzebujesz złapać przypadki awarii, po prostu zrób to:
$.post('superman', { field1: "hello", field2 : "hello2"},
function(returnedData){
console.log(returnedData);
}).fail(function(){
console.log("error");
});
Dodatkowo, jeśli zawsze wysyłasz ciąg JSON, możesz użyć $.getJSON lub $.post z jeszcze jednym parametrem na samym końcu.
$.post('superman', { field1: "hello", field2 : "hello2"},
function(returnedData){
console.log(returnedData);
}, 'json');
Spróbuj użyć metody GET,
var request = $.ajax({
url: 'url',
type: 'GET',
data: { field1: "hello", field2 : "hello2"} ,
contentType: 'application/json; charset=utf-8'
});
request.done(function(data) {
// your success code here
});
request.fail(function(jqXHR, textStatus) {
// your failure code here
});
Nie widać parametrów w adresie URL przy metodzie POST.
Edit:
Deprecation Notice: Wywołania zwrotne jqXHR.success(), jqXHR.error(), oraz. wywołania zwrotne jqXHR.complete() są usunięte od jQuery 3.0. Możesz użyć jqXHR.done(), jqXHR.fail(), oraz jqXHR.always().
W żądaniu POST, parametry są wysyłane w treści żądania, dlatego nie widać ich w adresie URL.
Jeśli chcesz je zobaczyć, zmień
type: 'POST',
na
type: 'GET',
Zauważ, że przeglądarki mają narzędzia deweloperskie, które pozwalają zobaczyć kompletne żądania, które wydaje twój kod. W Chrome, jest to w panelu "Sieć".