我已遵循this链接中所述的教程。在下面的代码中由于某种原因,数据不作为参数附加到url,但是如果我使用/?field1="hello"
将它们直接设置到url,它就可以工作。
$.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");
}
});
答案 0 :(得分:113)
我建议您在简单的情况下使用jQuery的$.post
或$.get
语法:
$.post('superman', { field1: "hello", field2 : "hello2"},
function(returnedData){
console.log(returnedData);
});
如果您需要捕获失败案例,请执行以下操作:
$.post('superman', { field1: "hello", field2 : "hello2"},
function(returnedData){
console.log(returnedData);
}).fail(function(){
console.log("error");
});
此外,如果您始终发送JSON字符串,则可以在最后使用$.getJSON或$ .post以及另外一个参数。
$.post('superman', { field1: "hello", field2 : "hello2"},
function(returnedData){
console.log(returnedData);
}, 'json');
答案 1 :(得分:57)
尝试使用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
});
使用POST方法无法在URL中查看参数。
编辑:
弃用通知: jqXHR.success(),jqXHR.error()和 从jQuery 3.0开始,jqXHR.complete()回调被删除。您可以使用 jqXHR.done(),jqXHR.fail()和jqXHR.always()代替。
答案 2 :(得分:42)
Jquery.ajax不会像对GET数据那样自动编码POST数据。 Jquery希望您的数据预先格式化,以便附加到请求正文,直接通过网络发送。
解决方案是使用jQuery.param函数构建一个查询字符串,该字符串处理POST请求所需的大多数脚本。
$.ajax({
url: 'superman',
type: 'POST',
data: jQuery.param({ field1: "hello", field2 : "hello2"}) ,
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: function (response) {
alert(response.status);
},
error: function () {
alert("error");
}
});
在这种情况下,param
方法将数据格式化为:
field1=hello&field2=hello2
Jquery.ajax文档说明有一个名为processData
的标志,用于控制此编码是否自动完成。文档说它默认为true
,但这不是我在使用POST
时观察到的行为。
答案 3 :(得分:14)
function FillData() {
var param = $("#<%= TextBox1.ClientID %>").val();
$("#tbDetails").append("<img src='Images/loading.gif'/>");
$.ajax({
type: "POST",/*method type*/
contentType: "application/json; charset=utf-8",
url: "Default.aspx/BindDatatable",/*Target function that will be return result*/
data: '{"data":"' + param + '"}',/*parameter pass data is parameter name param is value */
dataType: "json",
success: function(data) {
alert("Success");
}
},
error: function(result) {
alert("Error");
}
});
}
答案 4 :(得分:11)
在POST request中,参数会在请求正文中发送,这就是您在网址中看不到它们的原因。
如果您想看到它们,请更改
type: 'POST',
到
type: 'GET',
请注意,浏览器具有开发工具,可让您查看代码发出的完整请求。在Chrome中,它位于“网络”面板中。
答案 5 :(得分:6)
您可以使用$ .ajax或$ .post
来完成使用$ .ajax:
$.ajax({
type: 'post',
url: 'superman',
data: {
'field1': 'hello',
'field2': 'hello1'
},
success: function (response) {
alert(response.status);
},
error: function () {
alert("error");
}
});
使用$ .post:
$.post('superman',
{
'field1': 'hello',
'field2': 'hello1'
},
function (response, status) {
alert(response.status);
}
);
答案 6 :(得分:6)
$.ajax(
{
type: 'post',
url: 'superman',
data: {
"field1": "hello",
"field2": "hello1"
},
success: function (response) {
alert("Success !!");
},
error: function () {
alert("Error !!");
}
}
);
type: 'POST'
,会将**参数附加到请求的正文** 网址中未见在type: 'GET'
时,将参数附加到可见的网址。
大多数流行的网络浏览器都包含显示完整请求的网络面板。
在网络面板中,选择 XHR 以查看请求。
这也可以通过这个来完成。
$.post('superman',
{
'field1': 'hello',
'field2': 'hello1'
},
function (response) {
alert("Success !");
}
);
答案 7 :(得分:3)
您的代码是正确的,除非您没有将JSON密钥作为字符串传递。
它周围应该有双引号或单引号
{“field1”:“hello”,“field2”:“hello2”}
$.ajax(
{
type: 'post',
url: 'superman',
data: {
"field1": "hello", // Quotes were missing
"field2": "hello1" // Here also
},
success: function (response) {
alert(response);
},
error: function () {
alert("error");
}
}
);
答案 8 :(得分:1)
function funcion(y) {
$.ajax({
type: 'POST',
url: '/ruta',
data: {"x": y},
contentType: "application/x-www-form-urlencoded;charset=utf8",
});
}
答案 9 :(得分:0)
我知道这个答案太晚了
您还可以使用 FormData 将数据传递到 $.ajax({})
let formData = new FormData()
formData.append('data1', "Hello")
formData.append('data2', "World")
$.ajax({
url: '/',
type: 'POST',
data: formData,
contentType: false,
processData: false,
cache: false,
success: function(v){
console.log(v)
}
})
答案 10 :(得分:-3)
对于POST
方法中的网址发送参数您只需将其附加到网址:
$.ajax({
type: 'POST',
url: 'superman?' + jQuery.param({ f1: "hello1", f2 : "hello2"}),
// ...
});