php中的javascript数组在提交时使用Ajax不起作用

php中的javascript数组在提交时使用Ajax不起作用,javascript,php,jquery,ajax,arrays,Javascript,Php,Jquery,Ajax,Arrays,我有一个数组,我将它从javascript传递到php,在php页面中,我试图将它放到第三个页面中使用的会话中。代码如下 if(session_id()) { echo "Session started<br>"; $test = $_SESSION['array']; echo "The session is".$test; } else { echo "Did not get session"; } ?>

我有一个数组,我将它从javascript传递到php,在php页面中,我试图将它放到第三个页面中使用的会话中。代码如下

  if(session_id())
   {
    echo "Session started<br>";

    $test = $_SESSION['array'];
    echo "The session is".$test;

      }
   else 
  {
echo "Did not get session";
  }

 ?>
JavaScript:

var table_row = [];

table_row[0] = [123,123,123];
table_row[1] = [124,124,124];
table_row[2] = [125,125,125];

var jsonString = JSON.stringify(table_row);

 $.ajax({
 type: "POST",
 url: "test1.php",
 dataType: "json",
 data: {myJSArray: jsonString},
 success: function(data) {
                        alert("It is Successfull");
                        }
     });
test1.php

<?php
session_start();
$check1 = $_POST['myJSArray'];
$_SESSION['array']= $check1;
echo $check1;
?>
session_start();
unset($_SESSION['array']); 

$check1 = $_POST['source1'];    

$_SESSION['array']= $check1;
echo json_encode(check1);

test2.php

<?php 
session_start();
$test = $_SESSION['array'];
echo $test;
?>

在提交时,我调用javascript中的函数,表单将带我进入test2.php。它在test2.php页面上出现错误,注意:未定义索引:第13行C:\xampp\htdocs\test\test2.php中的数组


任何建议请务必让我知道。

您不需要对自己进行字符串化,jquery会为您执行此操作,如果您对其进行字符串化,jquery会认为您需要一个字符串

var table_row = [];

table_row[0] = [123,123,123];
table_row[1] = [124,124,124];
table_row[2] = [125,125,125];



 $.ajax({
 type: "POST",
 url: "test1.php",
 dataType: "json",
 data: {myJSArray: table_row},
 success: function(data) {
                        alert("It is Successfull");
                        }
     });
但是,在php方面,您仍然需要对其进行解码,因为从$\u POST获得它时,它始终是一个字符串。使用json_decode来实现

$check1 = json_decode($_POST['myJSArray']);

看看您的test2.php

<?php 
session_start();
$test = $_SESSION['array'];
echo $test;
?>
如果在
test2.php
中未发现问题,您可以在保存后检查
test1.php
echo
$\u会话['array']
,并在javascript回调函数alert
data
参数本身中,
我相信您可以通过这种方式发现问题。

我已经让它工作了,代码如下

Javascript文件:在page index.php中

您可以调用此函数并传递参数,也可以直接使用代码

var table_row = []; //globally declared array
var table_row[0]=["123","123","123"];
var table_row[1]=["124","124","124"];
var table_row[2]=["125","125","125"];

    function ajaxCode(){
            var jsonArray = JSON.stringify(table_row)
             $.ajax
                        ({
                            url: "test1.php",
                            type: "POST",
                             dataType: 'json',
                            data: {source1 : jsonArray},
                            cache: false,
                            success: function (data) 
                            {
                             alert("it is successfull")

                             }

                        });
            } 
页面:test1.php

session_start();
unset($_SESSION['array']); 

$check1 = $_POST['source1'];    

$_SESSION['array']= $check1;
echo json_encode(check1);
Page:test2.php//我希望从会话中获得值的最后一页
  if(session_id())
   {
    echo "Session started<br>";

    $test = $_SESSION['array'];
    echo "The session is".$test;

      }
   else 
  {
echo "Did not get session";
  }

 ?>
if(会话id())
  if(session_id())
   {
    echo "Session started<br>";

    $test = $_SESSION['array'];
    echo "The session is".$test;

      }
   else 
  {
echo "Did not get session";
  }

 ?>
{ 回显“会话已启动
”; $test=$\会话['array']; 回显“会话是”。$test;
  if(session_id())
   {
    echo "Session started<br>";

    $test = $_SESSION['array'];
    echo "The session is".$test;

      }
   else 
  {
echo "Did not get session";
  }

 ?>
} 其他的 { echo“未获得会话”;
  if(session_id())
   {
    echo "Session started<br>";

    $test = $_SESSION['array'];
    echo "The session is".$test;

      }
   else 
  {
echo "Did not get session";
  }

 ?>
} ?>
在索引页面中,我有一个提交的表单,提交时它调用ajax函数。
感谢您的帮助,非常感谢。

尝试将该索引重命名为其他索引。在test1.php中,确保获得通过ajax发送的JSON值。test1是否正确响应?为了测试,为什么不让ajax脚本临时回显返回的值呢?它应该与您发送的JSON字符串相同。我已经尝试过了,但在尝试获取会话值时,它仍然会显示“注意:未定义索引”。有什么想法吗?你的会话也需要解码json_decode($_session['XX']);您好,您是在谈论test2.php吗?您的页面和php脚本是否在同一个域(包括子域)上运行?如果不看Cors似乎是问题所在,会话cookie未设置谢谢您的回答。我已经检查了test1.php和test2.php。如果我给硬编码值,这两个值都有效。这个问题不是javascript n ajax独有的。该值不是从ajax到test1.php,在那里可以通过$check1=$\u POST['myJSArray']收集;然后你可以使用浏览器的开发者工具,检查
network
tab,在那里你可以看到任何ajax请求和响应等。我在使用mozilla firefox,我在哪里可以注册这个开发者工具,以及如何检查OK,然后右键单击文档上的任意位置,选择“Inspect Element”(Ctrl+Shift+k),你就会看到
network
tab,保持它打开,下一个重新加载页面(或者如果您通过单击按钮等进行ajax调用,只需进行ajax调用),您将看到网络活动(包括文件、ajax调用)的状态,并单击相应的项目以获取详细信息
  if(session_id())
   {
    echo "Session started<br>";

    $test = $_SESSION['array'];
    echo "The session is".$test;

      }
   else 
  {
echo "Did not get session";
  }

 ?>