javascript循环中只有一个ajax调用,而不是循环多个ajax调用


only one ajax call from javascript loop instead of looping multiple ajax calls

我有一个javascript中的2D数组。

目前我正在运行一个for循环,在每个循环中我都会调用ajax来更新数据库。

我知道这不是一种好的形式,我正在寻找一种只需一个ajax调用就可以从循环中更新数据库的方法。

我知道我必须一次性将数组传递到ajax页面并更新,但就我而言,我不知道从哪里开始使用这个

任何帮助都非常感谢

这是我的循环的javascript

for(var m=0; m<array.length; m++){
$.post("update_page_positions.php",{page_ref:array[m][0], ref:array[m][12], menu_pos:array[m][1], sub_menu_pos:array[m][2], top_menu:array[m][3], pagelink:array[m][4], indexpage:array[m][5], hidden:array[m][6], page_title:array[m][7], page_desc:array[m][8], page_keywords:array[m][9], page_name:array[m][10], deletedpage:array[m][11]},         
    function(data,status){             
});   

这是我的ajax php代码

<?
include("connect.php");     
$ref = $_POST['ref'];
$page_ref = $_POST['page_ref'];
$menu_pos = $_POST['menu_pos'];
$sub_menu_pos = $_POST['sub_menu_pos'];  
$top_menu = $_POST['top_menu'];
$indexpage = $_POST['indexpage'];       
$page_name = $_POST['page_name'];    
$page_title = $_POST['page_title'];
$page_desc = $_POST['page_desc'];   
$page_keywords = $_POST['page_keywords'];   
$hidden = $_POST['hidden']; 
$pagelink = $_POST['pagelink']; 
$deletedpage = $_POST['deletedpage'];   
mysql_query("UPDATE pages SET menu_pos='$menu_pos', sub_menu_pos='$sub_menu_pos', top_menu='$top_menu', indexpage='$indexpage', page_name='$page_name', page_title='$page_title', desc1='$page_desc', keywords_list='$page_keywords', hidden='$hidden', link='$pagelink' WHERE ref='$ref' AND page_ref='$page_ref'")
?>

JS调用:

$.post('update_page_positions.php', 
    {'myArray': m},
    function(data, statusText) {
        // This block is optional, fires when the ajax call is complete
    }
);

AJAX处理程序:

<?php
include("connect.php");     
$myArray = json_decode($_POST['myArray']);
// do stuff with $myArray here.
?>

只需像这样发布整个数组:

$.post("update_page_positions.php",{"your_array":数组}//…

然后在PHP中引用这个变量:$_POST['your_array'],它将是数组以及

var_dump($_POST['your_array']);

这将帮助您了解其结构并进一步使用它。

创建一个包含所有对象的数组:

var data = [];
for(var m=0; m<array.length; m++){
    var obj = {page_ref      : array[m][0], 
               menu_pos      : array[m][1], 
               sub_menu_pos  : array[m][2], 
               top_menu      : array[m][3], 
               pagelink      : array[m][4], 
               indexpage     : array[m][5], 
               hidden        : array[m][6], 
               page_title    : array[m][7], 
               page_desc     : array[m][8], 
               page_keywords : array[m][9], 
               page_name     : array[m][10], 
               deletedpage   : array[m][11],
               ref           : array[m][12] 
              };
    data.push(obj)
});
$.post("update_page_positions.php", data);

在服务器端进行迭代:

<?php
foreach( $_POST as $P ) {
    include("connect.php");     
    $ref           = $P['ref'];
    $page_ref      = $P['page_ref'];
    $menu_pos      = $P['menu_pos'];
    $sub_menu_pos  = $P['sub_menu_pos'];  
    $top_menu      = $P['top_menu'];
    $indexpage     = $P['indexpage'];       
    $page_name     = $P['page_name'];    
    $page_title    = $P['page_title'];
    $page_desc     = $P['page_desc'];   
    $page_keywords = $P['page_keywords'];   
    $hidden        = $P['hidden']; 
    $pagelink      = $P['pagelink']; 
    $deletedpage   = $P['deletedpage'];   
    mysql_query("UPDATE pages ......")
}
?>