如何使用JQuery和Ajax将一维数组传递到php页面?

时间:2019-06-11 16:29:17

标签: jquery json ajax

我有一个一维数组,可以根据复选框的更改进行填充和删除。为了演示该架构,我的数组如下:

arrReservedSeats = [“ 1A”,“ 3B”,“ 5C”,...]

一些操作后,我想在php端使用此数组将它们存储在数据库中。由“购买”按钮触发的我的javascript函数的ajax部分如下:

Ajax代码:

$.ajax({
           url:  'makePurchase.php',
           type: 'POST',
           dataType: 'text',
           data: {"arrResSeats" : arrReservedSeats}
           })
             .done(function(response) {

               if(response == "success")
               {
                 //..
               }
               else if(response == "failure")
               {
                 //..
               }
             })
               .fail(function(jqXHR, status, error) {

                  alert(jqXHR.response);
               })
                 .always(function(){
                    //..
                 });

我不希望将某些数据返回到javascript端,所以我只是使用了将数据作为“文本”返回的方式。

makePurchase.php:

if(isset($_POST["arrResSeats"]))
  echo("<script>console.log('PHP: ".$_POST["arrResSeats"]."');</script>");

// Database operations...

if(//operations are okay)
   echo "success";
else
   echo "failure";

问题是,我无法通过ajax与我的php页面进行通信(我可以发送一个变量,而无需使用json,但在这种情况下,我需要传递一个数组)。感谢您的关注!

注意:我已经检查了Stackoverflow上几乎所有相关的链接,但是我无法在我的项目中使它们有用。

2 个答案:

答案 0 :(得分:1)

我同意,可能应该可以。如果您得到的状态码不是200,例如404或500,则PHP页面的URL可能有错误,或者PHP页面本身有问题。我在服务器上尝试了它,尽管$ _POST [“ arrResSeats”]已经是一个数组,但它看起来确实可以工作。您不必解码它。

如果我放:

    Windows("as_built_comp.xlsm").Activate
    Sheets(siteName).Activate
    j = Cells(Rows.Count, 1).End(xlUp).Row
    Range("C2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    wb.Activate
    Range("I12").Select
    For i = 1 To 1440
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, 
              SkipBlanks _
        :=False, Transpose:=False
        ActiveWindow.SmallScroll Down:=56
        ActiveCell.Offset(j - 1, 0).Select
    Next i

在php页面上,我得到:

<?

$arrResSeats = $_POST["arrResSeats"];

print_r($_POST["arrResSeats"]);


?>

我不确定您是否甚至必须先在HTML页面上先进行Stringify然后进行解析。

Array
(
    [0] => 1A
    [1] => 3B
    [2] => 5C
)

您也许还可以只传递一个JSON字符串作为arrResSeats或ResSeatsJSON(重命名)的值,然后在PHP页面上对其进行解码。

答案 1 :(得分:0)

为了使问题更容易理解: 当我触发其他ajax函数(它们可以正常工作)时,“网络”标签如下所示:

My other correct functions

但是,当我尝试此操作时,结果不是应该的结果:

The problematic one (仅此,“网络”标签中没有更多操作)

如您所见,没有“ POST”操作。我正在使用与其他(正确)功能相同的功能。我看不出有什么区别,所以对我来说很奇怪。