dongyong3590 2015-11-13 16:37
浏览 24
已采纳

如何在PHP中从ajax发布到PHP的数组中访问对象?

I am posting an array from javascript using AJAX

$.ajax({
        url: "test.php",
        type: "POST",
        data: {arr:fullData},

        success: function (data) {
            console.log(data);
            document.getElementById("status").innerHTML = data;

        },

        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("Status: " + textStatus);
            alert("Error: " + errorThrown);
        }

This is the array:

0: "event=200 Yard Free Style&swimmername=joe fish&lane=1&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=2&swimmername2=joe fish"
1: "event=200 Yard Free Style&swimmername=steve jobs&lane=3&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=4&swimmername2=steve jobs"
2: "event=200 Yard Free Style&swimmername=steve jobs&lane=5&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=6&swimmername2=steve jobs"
length: 3

In PHP, The array comes through like this:

array (size=1)
  'arr' => 
    array (size=3)
      0 => string 'event=200 Yard Free Style&swimmername=joe fish&lane=1&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=2&swimmername2=joe fish' (length=147)
      1 => string 'event=200 Yard Free Style&swimmername=steve jobs&lane=3&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=4&swimmername2=steve jobs' (length=151)
      2 => string 'event=200 Yard Free Style&swimmername=steve jobs&lane=5&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=6&swimmername2=steve jobs' (length=151)

I have tried using "explode()" but it keeps saying it can't explode an "array"

I am trying to do the following:

 $array = $_POST;
 var_dump ($array[0]['event'] );

and set the different values to build a sql query like so (in loop):

 foreach($_POST as $data)
{
    $sql_query = '(';

if(isset($array['event'])){$sql_query .= $array['event'] . ',';}
if(isset($array['event'])){$sql_query .= $array['swimmername'] . ',';}

I am new to PHP and having a tough time figuring it out. Any help will be appreciated.

PHP Code:

<?php

$array = $_POST;

$array1 = $_REQUEST['arr'];
var_dump($array['arr']);

$returnedInfo = explode('&',$array[1]);
// Empty string when using an empty array:
echo ($returnedInfo);
$sql_query = 'INSERT INTO tbl_name
    (event,swimmername, lane, place, time, score,  )
    VALUES ';
$i = 0;
$arrayLength = count($_POST);
var_dump ($arrayLength);

foreach($_POST as $data)
{


    $sql_query = '(';
    if(isset($data['event'])){$sql_query .= $data['event'] . ',';}
    if(isset($data['swimmername'])){$sql_query .=  ','. $data['swimmername'] . ',';}
    if(isset($data['lane'])){$sql_query .=  ','.  $data['lane'] . ',';}
    if(isset($data['place'])){$sql_query .=  ','. $data['place'] . ',';}
    if(isset($data['time'])){$sql_query .=  ','. $data['time'] . ',';}
    if(isset($data['scoreA'])){$sql_query .=  ','.  $data['scoreA'] . ',';}
    if(isset($data['scoreB'])){$sql_query .=  ','. $data['scoreB'] . ',';}
    if(isset($data['time2'])){$sql_query .=  ','. $data['time2'] . ',';}
    if(isset($data['lane2'])){$sql_query .=  ','.  $data['lane2'] . ',';}
    if(isset($data['place2'])){$sql_query .=  ','. $data['place2'] . ',';}
    if(isset($data['swimmername2'])){$name2[] = $data['swimmername2'] . ',';}
    $i++;
    if($i < $arrayLength) {
        $sql_query .=  '),';
    } else {
        $sql_query .=  ');';
    }


}
// Then use $sql_query for the INSERT step.
?>
  • 写回答

1条回答 默认 最新

  • dp926460 2015-11-13 17:32
    关注

    Assuming your array looks like this:

    array (
      'arr' => 
      array (
        0 => 'event=200 Yard Free Style&swimmername=joe fish&lane=1&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=2&swimmername2=joe fish',
        1 => 'event=200 Yard Free Style&swimmername=steve jobs&lane=3&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=4&swimmername2=steve jobs',
        2 => 'event=200 Yard Free Style&swimmername=steve jobs&lane=5&time=00:00:00&place=0&scoreA=0&scoreB=0&place2=0&time2=00:00:00&lane2=6&swimmername2=steve jobs',
      ),
    )
    

    ...you simply need to loop through it and use something like parse_str (easy) or explode (slightly more work) to transform each string into an array. For example:

    # Grab the 'arr' array
    $realArray = isset($array['arr']) ? $array['arr'] : array();
    foreach ( $realArray as $k => $v ) {
        # Quick and painless way to convert to array
        parse_str($v, $value);
        $realArray[$k] = $value;
    }
    # Put this into a function called 'debug' to make life easier
    echo '<pre>';
    var_export($realArray);
    echo '</pre>';
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 fluent无法启动
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架
  • ¥15 有关sql server business intellige安装,包括SSDT、SSMS。