【问题标题】:Javascript array is not completely assigned to php arrayJavascript数组未完全分配给php数组
【发布时间】:2018-12-09 04:43:58
【问题描述】:

下面是我在 javascript 中的数组内容。我正在使用 get 调用将它传递给 php 页面。我还将其他数组与这个数组一起传递。这些数组值被完全传递。只有这个数组传递部分值。我还用 javascript 提醒它,并在那里完成。而在 php 中它只取 2 个值而不是 14 个。

var testPlanNameArray= ["Eligibility-Real Time Eligibility Cascading Validation", "Eligibility-SubmitterRouting", "Eligibility alias for defth", "Eligibility-Submitter x", "Eligibility-SubmitterRouting", "Eligibility-SubmitterRouting & Partner alias", "Eligibility-SubmitterRouting", "Eligibility-SubmitterRouting & Partne", "Eligibility-SubmitterRouting & Partner", "Eligibility-SubmitterRouting ", "Custom Maps Validation", "Custom Maps Validation", "Eligibility-Real Time Eligibility Custom Maps Validation", "Eligibility-Real Time Eligibility Custom Maps Validation"];

我将使用下面的代码传递给 php

$.get("dbValidation.php?&testIDArray=" + testIDArray + "&testPlanNameArray=" + testPlanNameArray + "&errorArray=" + errorArray + "&historyErrorDescArray=" + historyErrorDescArray  + "&expectedDEPProp=" + expectedDEPProp  + "&actualDEPProp=" + actualDEPProp).done(function(data3) {
                                // alert(testPlanNameArray);
                                        console.log(data3);
                                        console.log(testPlanNameArray);
                            });

在php页面我只是在做

<?php
$testPlanNameArray = explode(",", $_GET['testPlanNameArray']);
print_r($testPlanNameArray);
?>

当我执行 console.log(data3) 时,它会打印出来

Array
(
    [0] => Eligibility-Real Time Eligibility Cascading Validation
    [1] => Eligibility-SubmitterRouting 
)

我试过 $testPlanNameArray = json_decode($_GET['testPlanNameArray']);但它仍然没有完全发挥价值。问题仅与此数组有关。对于休息数组,它工作正常。

【问题讨论】:

  • var_dump($_GET) 显示什么?
  • 它正在打印 ["Eligibility-Real Time Eligibility Cascading Validation", "Eligibility-SubmitterRouting", "Eligibility alias for defth", "Eligibility-Submitter x", "Eligibility-SubmitterRouting", "Eligibility -SubmitterRouting & Partner alias"、"Eligibility-SubmitterRouting"、"Eligibility-SubmitterRouting & Partne"、"Eligibility-SubmitterRouting & Partner"、"Eligibility-SubmitterRouting"、"自定义地图验证"、"自定义地图验证"、"资格-实时资格自定义地图验证”、“资格-实时资格自定义地图验证”] 在控制台中。
  • 这没有意义。它应该打印一个以所有参数名称作为键的关联数组。
  • 点赞"testPlanNameArray" =&gt; Array(15) ( ... )

标签: javascript php arrays get


【解决方案1】:

可能存在编码问题。我建议你将一个对象传递给$.get,它会正确编码。

$.get("dbValidation.php", {
    testIDArray: testIDArray,
    testPlanNameArray: testPlanNameArray,
    errorArray: errorArray,
    historyErrorDescArray: historyErrorDescArray,
    expectedDEPProp: expectedDEPProp,
    actualDEPProp: actualDEPProp
}).done(...)

这种编码实际上会在$_GET参数中创建数组,所以你根本不需要使用explode()json_decode()

请注意,URL 参数的长度通常有限制,通常为 1024 或 2048。因此,尝试在 URL 上传递长数组可能效果不佳。你应该使用$.post,它有更高的限制。

【讨论】:

  • 感谢您回复@Barmar。我现在就试试,很快就会通知你。
  • 我尝试了上面的答案,在 php 中我做了 $testIDArray = $_GET['testIDArray']; $testPlanNameArray = $_GET['testPlanNameArray']; // $testPlanNameArray = json_decode($_GET['testPlanNameArray']); // $testPlanNameArray = array(explode(",", $_GET['testPlanNameArray'])); $errorArray = $_GET['errorArray']; $historyErrorDescArray = $_GET['historyErrorDescArray']; // $errorArraySecond = explode(",", $_GET['errorArraySecond']); $expectedDEPProp = $_GET['expectedDEPProp']; $actualDEPProp = $_GET['actualDEPProp'];
  • 我在浏览器控制台中得到 414 状态
  • 这是 URL 太长的错误。你已经达到我提到的极限了。
  • 你需要切换到POST。
猜你喜欢
  • 1970-01-01
  • 2011-12-24
  • 2012-03-09
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 2012-10-09
  • 2015-07-14
  • 1970-01-01
相关资源
最近更新 更多