编辑返回的数据并使用AJAX发送回已编辑的数据

时间:2019-02-27 08:12:27

标签: jquery ajax

我要编辑从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);
})

1 个答案:

答案 0 :(得分:1)

您是否有任何理由将数据嵌入发送(edited_data到花括号中?

在您的first_func POST中,您将数据作为JSON发送。但不在您的second_func POST中。端点get_updated_data.php 接受哪种格式

jQuery POST表单数据(传统)

使用POST方法,默认 contentType 'application/x-www-form-urlencoded; charset=UTF-8'。因此,如果未指定其他 contentType ,则通常有两个选择:

  1. 查询字符串
  2. 对象(键值),它在发送之前由jQuery内部转换为查询字符串

请参阅文档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)
    {

    }
});

jQuery POST数据作为JSON

您希望将数据作为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
  });
};

另请参见