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

时间:2013-08-06 11:40:57

标签: php javascript ajax for-loop

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

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

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

我知道我必须将数组传递到ajax页面并一次性更新但是对于我的生活我无法弄清楚从哪里开始

任何帮助非常感谢

继承我的javascript for loop

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'")

?>

3 个答案:

答案 0 :(得分:1)

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.

?>

答案 1 :(得分:0)

像这样发布整个数组:

$ .post(“update_page_positions.php”,{“your_array”:array} //...

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

var_dump($_POST['your_array']);

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

答案 2 :(得分:0)

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

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 ......")
}

?>