【问题标题】:Why does PHP file return "array", but not its contents为什么 PHP 文件返回“数组”,但不返回其内容
【发布时间】:2021-11-09 08:58:02
【问题描述】:

我想向 PHP 发送一个数组,但是 PHP 只输出“数组”。我有两个文件: forms1.php 和 forms1.js。 PHP if 语句永远不会变为真。我也试过不使用 if 语句。

感谢您在 cmets 中指出,是的,我调用了该函数,并且警报返回了整个 forms1.php 代码。

旧标题:为什么我的 php 文件看不到 GET["result"]? // 这个标题是错误的

forms1.js

var nums = [1,2,3,4];

function postcars() {
    $.ajax({
    type    : 'GET',
    url     : 'forms1.php',
    data    : {"result": nums},
    success: function(resp)
    {
        alert(resp);
    } 
});
}

forms1.php

<?php
if ($_GET["result"] != null){
  $filename = $_GET["result"];
  echo $filename;
}
?>

【问题讨论】:

  • 你为什么要与 null 开始比较?您应该使用issetempty 来检查外部参数是否设置/为空。
  • AJAX 请求返回什么?您是否检查过控制台以确保没有错误?
  • 要调试的两个部分。在浏览器中手动输入预期的 URL 以查看 PHP 结果可能是有意义的。还有error_reporting。
  • 另外,你不能在 PHP 中使用 echo 正确输出一个数组,结果只会得到字面值 Array
  • 如果您向同一页面发送 ajax 请求,您需要做一些事情来防止整个页面源成为响应数据的一部分

标签: php jquery ajax get


【解决方案1】:

nums是一个数组,里面的元素可以作为单独的值发送,参数名称是result[],使用JSON.stringify使其成为单个字符串

var nums = [1,2,3,4];

function postcars() {
    $.ajax({
    type    : 'GET',
    url     : 'forms1.php',
    data    : {"result": JSON.stringify(nums)},
    success: function(resp)
    {
        alert(resp);
    } 
});
}

【讨论】:

    【解决方案2】:

    你没有调用函数postcars()

    JavaScript 文件应该是这样的:

    var nums = [1,2,3,4];
    
    function postcars() {
        $.ajax({
        type    : 'GET',
        url     : 'forms1.php',
        data    : {"result": nums},
        success: function(resp)
        {
            alert(resp);
        } 
    });
    }
    
    postcars();
    

    【讨论】:

    • 我给邮车打了电话。这是我的错,我第一次发布问题时没有说清楚。
    【解决方案3】:

    我通常会测试请求中是否包含特定参数(使用 isset()!empty() ),然后调用 ob_clean() 以丢弃在该阶段生成的任何可能的输出缓冲区。处理请求,然后完全终止处理,因为它是不同的线程。然后被退回的响应是您要发送的内容。这种带有 GET 请求的方法会导致有查询字符串(例如 forms1.php?result=banana)的常规页面加载在该阶段停止并且不显示更多内容/。

    <?php
        if( isset( $_GET['result'] ) ){
            ob_clean();
            $filename = $_GET["result"];
            /* do interesting stuff with variable... */
            
            exit('Hello World! - Send a response');
        }
    ?>
    <!DOCTYPE html>
    <html lang='en'>
        <head>
            <meta charset='utf-8' />
            <title>geronimo</title>
            <script src='//code.jquery.com/jquery-latest.js'></script>
        </head>
        <body>
            
            <script>
                var nums = [1,2,3,4];
    
                function postcars() {
                    $.ajax({
                        type    : 'GET',
                        url     : 'forms1.php',
                        data    : {"result": nums},
                        success: function(resp){
                            alert(resp);
                        } 
                    });
                };
                // oops, forgot to call the ajax function
                postcars(); 
            </script>
        </body>
    </html>
    

    【讨论】:

    • 感谢您提供良好的编程实践。 //哎呀,忘记回复你了;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2012-04-02
    • 2018-01-24
    • 1970-01-01
    相关资源
    最近更新 更多