php - 将 Ajax JQuery 选择器保存在数组中

标签 php jquery arrays json ajax

我是 Ajax 的新手,我需要帮助才能将来自 Ajax 请求的数据存储到数组中。我在论坛上查看了答案,但无法解决我的问题。Ajax 响应进入 $('#responseField').val(format(output.response))我想将“output.response”存储到一个可以在 Ajax 外部使用的数组中。我试图在 Ajax 之外声明一个变量并稍后调用它,但没有成功。我正在使用应该获取数据的 $json_arr。我如何从 Ajax 获取数据并将其存储在变量中以便在 Ajax 外部使用?这个变量将是一个我可以访问索引的数组。

function sendRequest(postData, hasFile) {

  function format(resp) {
    try {
      var json = JSON.parse(resp);
      return JSON.stringify(json, null, '\t');
    } catch(e) {
      return resp;
    }
  }

  var value; // grade item
  $.ajax({
          type: 'post',
          url: "doRequest.php",
          data: postData,
          success: function(data) { //data= retArr

            var output = {};

            if(data == '') {
              output.response = 'Success!';
            } else {
              try {
                output = jQuery.parseJSON(data);


              } catch(e) {
                output = "Unexpected non-JSON response from the server: " + data;
              }
            }
            $('#statusField').val(output.statusCode);
            $('#responseField').val(format(output.response));

            $("#responseField").removeClass('hidden');
            data = $.parseJSON(output.response)
            $json_arr=$('#responseField').val(format(output.response));
          },
          error: function(jqXHR, textStatus, errorThrown) {
            $('#errorField1').removeClass('hidden');
            $("#errorField2").innerHTML = jqXHR.responseText;
          }

  });

}

window.alert($json_arr);

最佳答案

let promise = new Promise(function(resolve, reject) {
  $.ajax({
          type: 'post',
          url: "doRequest.php",
          data: postData,
          success: function(data) { //data= retArr

            var output = {};

            if(data == '') {
              output.response = 'Success!';
            } else {
              try {
                output = jQuery.parseJSON(data);


              } catch(e) {
                output = "Unexpected non-JSON response from the server: " + data;
              }
            }
            $('#statusField').val(output.statusCode);
            $('#responseField').val(format(output.response));

            $("#responseField").removeClass('hidden');
            data = $.parseJSON(output.response)
            resolve(format(output.response));
          },
          error: function(jqXHR, textStatus, errorThrown) {
            $('#errorField1').removeClass('hidden');
            $("#errorField2").innerHTML = jqXHR.responseText;
          }

  });
});
promise.then(
  function(result) { /* you can alert a successful result here */ },
  function(error) { /* handle an error */ }
);

问题是您正在异步调用。

关于php - 将 Ajax JQuery 选择器保存在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54641013/

相关文章:

php - Nginx 找不到文件但从 mysql 中获取信息

php - 重置 GridView 过滤器

c++ - 数组遍历与指针,缓存效率方面

java - 我可以在java中动态填充args[]参数吗?

php - 计算更新天数

php - 服务中的许多依赖项

javascript - 在大文件的 http 传输中间歇性获取 TCP._onclose

javascript - 如何优化 Jquery 中的 ajax 请求?

javascript - 如何在 JsPlumb 中建立与边缘的连接?

php - 更新多个 SQL 行