我正在使用AJAX将数据发送到服务器。如果我把所有的数据都放到URL中,它就能工作了,所以一切都很好。但是,当我将所有数据放入AJAX中的“数据”时,服务器写--所需的字符串参数就不存在了。尽管我可以在请求体(浏览器中)看到所有数据。可能出什么事了?
const data = {
firstName: name,
surname: surname,
email: email,
password: pass1,
roles: roles
};
state.search.method("POST", "users", JSON.stringify(data));
method(type_, url_, data_){
$.ajax({
url: proxy + url_,
type: type_,
contentType: "x-www-form-urlencoded",
dataType: "json",
headers: {
'Authorization': 'bearer ' + localStorage.access_token
},
data: data_,
success: function(result){
alert("OK METHOD");
},
error(XMLHttpRequest, textStatus, errorThrown){
alert('Error: ' + errorThrown + ", " + textStatus);
console.log(XMLHttpRequest.status + ' ' +
XMLHttpRequest.statusText);
}
});
}
发布于 2019-07-17 08:23:40
也许服务器只是试图通过查询字符串读取信息,这意味着您应该使用GET方法而不是POST提交。
尝试像这样更改您的方法()函数:
method(type_, url_, data_){
$.ajax({
url: proxy + url_,
type: "get", //Send using GET method
headers: {
'Authorization': 'bearer ' + localStorage.access_token
},
data: data_,
success: function(result){
alert("OK METHOD");
},
error(XMLHttpRequest, textStatus, errorThrown){
alert('Error: ' + errorThrown + ", " + textStatus);
console.log(XMLHttpRequest.status + ' ' +
XMLHttpRequest.statusText);
}
});
}
然后,您将其命名为(不带),json字符串如下所示:
state.search.method("POST", "users", data);
发布于 2019-07-17 08:25:01
不能说我对这个答案百分之百,但我在这里假设了两件事
你实际上是想在这里执行'GET‘请求,而不是post,正如您已经说过在浏览器中尝试了URL,然后我假设您已经将这个输入到地址栏中,然后这将是一个'GET’请求。
您可以在JQuery中使用$.params函数来构建查询。那么,您的代码可能会像这样。
您的数据对象
const data = {
firstName: 'name',
surname: 'surname',
email: 'email',
password: 'pass1',
roles: 'roles'
}
Ajax方法
let queryString = $.param(data)
let url = 'https://your base url';
$.ajax({
url:url+'?'+queryString, //Building your url for getting the data
method: 'GET',
success: function(data){
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown){
console.log(textStatus) // You can console.log the other values for debugging
}
});
我认为,要将值表单映射到对象中,然后再映射到ajax方法中,还需要做一些工作。
如果你能给我更多的细节,说明它们是如何结合在一起的,那么我就可以提供一个更新,提供更多的具体信息。
希望这能有所帮助
注意,如果它是数据的一个POST,只需要了解有效负载需要什么样。
发布于 2019-07-17 08:28:02
您正在发布JSON:
state.search.method("POST“、"users”、JSON.stringify(data));
您声称您正在发布x-www-form-urlencoded
数据。
contentType:"x-www-form-urlencoded",
如果您试图发布JSON,那么使用正确的内容-Type:application/json
发送它
如果您试图发布URL编码的数据,那么:
contentType
参数,或者让它正确(application/x-www-form-urlencoded
) )。state.search.method("POST", "users", data);
(默认情况下,jQuery将以该格式编码对象)。如果我把所有数据都放到URL上就行了
如果您想在URL中发布所有数据,那么您应该发出一个GET请求并正确地编码它。
所以:
指定GET,并再次传递一个对象而不是JSON:state.search.method("GET", "users", data);
( jQuery将正确地在查询字符串中对数据进行编码)。
https://stackoverflow.com/questions/57079807
复制