0

我在javascript中有一个二维数组。

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

我知道这不是很好的形式,并且正在寻找一种方法来仅通过一个 ajax 调用从循环中更新数据库。

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

非常感谢任何帮助

这是我的 javascript for 循环

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

?>
4

3 回答 3

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.

?>
于 2013-08-06T11:48:41.753 回答
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 ......")
}

?>
于 2013-08-06T11:52:40.727 回答
0

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

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

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

var_dump($_POST['your_array']);

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

于 2013-08-06T11:50:17.440 回答