我要编辑从AJAX返回的数据,然后使用AJAX返回所编辑的数据。
第一个AJAX请求成功,但是第二个没有成功。我找不到错误所在。有什么帮助吗?
function first_func() {
return $.ajax({
url: "get_updated_data.php",
type: "POST",
dataType: "json",
data: {
original_data
},
})
}
function second_func(secondData) {
$.ajax({
url: "get_updated_data.php",
type: "POST",
data: {
edited_data
},
})
}
first_func().then(function(data) {
var NewData = data;
function editReturnedData() {
// edit first returned data here
}
return result;
}
second_func(secondData);
})
答案 0 :(得分:1)
您是否有任何理由将数据嵌入发送(edited_data
)到花括号中?
在您的first_func
POST中,您将数据作为JSON发送。但不在您的second_func
POST中。端点get_updated_data.php
接受哪种格式?
使用POST方法,默认 contentType 为'application/x-www-form-urlencoded; charset=UTF-8'
。因此,如果未指定其他 contentType ,则通常有两个选择:
请参阅文档jQuery ajax, Section "Sending Data to the Server":
数据选项可以包含格式为
key1=value1&key2=value2
的查询字符串或格式为{key1: 'value1', key2: 'value2'}
的对象。如果使用后一种形式,则在发送数据之前,将使用jQuery.param()将数据转换为查询字符串。可以通过将processData设置为false来避免此处理。如果希望将XML对象发送到服务器,则处理可能是不希望的。在这种情况下,请将contentType选项从application / x-www-form-urlencoded更改为更合适的MIME类型。
因此,您应该按以下方式调用jQuery的ajax
函数:
var edited_data = "name=ravi&age=31"; // query string
// or
var edited_data = {name:"ravi",age:"31"}; // object (key-value pairs)
$.ajax({
url : "get_updated_data.php",
type: "POST",
data : edited_data,
success: function(data, textStatus, jqXHR)
{
//data - response from server
},
error: function (jqXHR, textStatus, errorThrown)
{
}
});
您希望将数据作为JSON发送,而您的PHP端点希望如此。 您的后期设置需要进行以下调整:
dataType: 'JSON'
(来自您的 first_func )data: JSON.stringify(data)
(来自您的 second_func )contentType: 'application/json; charset=utf-8'
最好的方法是将其包装到如下函数中:
$.postJSON = function(url, data, callback) {
return jQuery.ajax({
type: 'POST',
url: url,
contentType: 'application/json; charset=utf-8', // header used by endpoint
data: JSON.stringify(data), // needed since JSON is sent in body as string
dataType: 'json', // this tells jQuery how to handle data-response
success: callback // this will be your callback-function
});
};