【问题标题】:Simple call to php script using AJAX not working使用 AJAX 对 php 脚本的简单调用不起作用
【发布时间】:2015-07-27 04:11:50
【问题描述】:

我是 javascript 和 AJAX 的新手。我有动态 HTML 表,我在其中添加了一个带有 textarea 的新列。我创建了一个 javascript 数组来存储我希望传递给我的 php 脚本的所有文本区域的名称。
这是我的javascript函数:

function checkout()
{
        $.ajax({
            type : "POST",
            url  : "loadmsg.php",
            data : {'file_array' : upload},
            success : function(data)
            {
                if(data.status == 'success')
                alert("Thank you for subscribing!");
            else if(data.status == 'error')
                alert("Error on query!");
            }

        });
}

这里上传的是一个全局 javascript 数组,我希望将它传递给我的 php 脚本 loadmsg.php。
这是 loadmsg.php 文件:

<?php
if(isset($_POST['file_array']))
{
    $file_array = $_POST['file_array'];
    echo "<script type='text/javascript'>alert('Success');</script>";
}
?>

但是当执行结帐功能时,没有警报框。我检查了上传数组不为空。
谁能告诉我哪里出错了?
使用 Firebug 调试后,我在控制台
ReferenceError:$ not defined $.ajax 行中收到以下错误

【问题讨论】:

  • 你从哪里得到这条线:data : {'file_array' : upload}?你在哪里定义了upload
  • 您需要显示哪个警报?
  • 您的预期信息是什么?
  • @V P 我在 php 脚本中添加了警报以进行调试。我基本上希望在 php 变量 $file_array 中加载上传数组
  • @Rasclatt upload 是我在结帐功能之前在同一个文件中定义和初始化的全局 javascript 数组

标签: javascript php ajax


【解决方案1】:

像这样改变你的 php 代码

<?php
if(isset($_POST['file_array']))
{
    $file_array = $_POST['file_array'];
    echo json_encode(array('status' => 'success'));
}
?>

对您的 js 代码进行一些更改

$.ajax({
        type : "POST",
        url  : "loadmsg.php",
        data : {'file_array' : 'upload'},
        success : function(data)
        {
            var response = $.parseJson(data);
            if(response.status == 'success')
            alert("Thank you for subscribing!");
        else if(response.status == 'error')
            alert("Error on query!");
        }

    });

希望能成功

【讨论】:

  • 我仍然没有收到任何消息
  • @Hossain 仍然没有警报
  • 试试echo json_encode(array('status' =&gt; 'success'));而不是return
  • @hossain 抱歉输入错误
【解决方案2】:

试试这个它对我有用:

你的脚本

 function checkout()
        {
       $.ajax({
                type : "POST",
                url  : "form1.php",
                data : {'file_array' : upload},
                success : function(data)
                {
                  var data = JSON.parse(data);
                    if(data.status == 'success')
                    alert("Thank you for subscribing!");
                else if(data.status == 'error')
                    alert("Error on query!");
                }

            });
      }

你的 PHP 应该是。,

<?php
if(isset($_POST['file_array']))
{
    $file_array = $_POST['file_array'];
    $data['status'] = 'success';

    echo json_encode($data);
}
?>

【讨论】:

    【解决方案3】:

    包含在你的 head 标签中

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    

    javascript

    别忘了将dataType: "json", 添加到您的ajax

      function checkout()
        {
                $.ajax({
                    type : "POST",
                    dataType: "json",
                    url  : "loadmsg.php",
                    data : {'file_array' : upload},
                    success : function(data)
                    {
                        if(data.status == 'success')
                        alert("Thank you for subscribing!");
                    else if(data.status == 'error')
                        alert("Error on query!");
                    }
    
                });
        }
    

    php

    <?php
    if(isset($_POST['file_array']))
    {
        $file_array = $_POST['file_array'];
        $arr['status']='success';
        echo json_encode($arr);
    }
    ?>
    

    试试这个

    【讨论】:

    • 你想在你的网站上echo "&lt;script type='text/javascript'&gt;alert('Success');&lt;/script&gt;";
    • 您的alert("Thank you for subscribing!"); 是否使用此代码工作过?
    • 不,alert("Thank you for subscribing!) 不起作用。我希望在我的 php 变量中传递上传数组
    • 我刚刚检查了$.ajax 行上出现错误ReferenceError:$ not defined
    • 你是否在 HTML 标签中包含了&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"&gt;&lt;/script&gt;??
    【解决方案4】:

    您需要从 AJAX (PHP) 文件的后端回显变量。

    Javscript 文件中已存在警报。

    所以,修正后的 PHP 文件是:

    <?php
    if(isset($_POST['file_array']))
    {
        $file_array = $_POST['file_array'];
        echo 'success';
    }
    ?>
    

    和js,

    success : function(data)
                {
                    if(data == 'success')
                    alert("Thank you for subscribing!");
                else if(data == 'error')
                    alert("Error on query!");
                }
    

    您可以使用 Firefox 的 Firebug 进行调试。

    转到Firebug's Console 选项卡,查看正在执行哪些请求。

    它会显示:

    • 正在发布参数

    • 从后端文件输出。

    从这里,您将准确了解数据流。

    【讨论】:

    • 我这样做了,但我仍然没有收到任何消息
    • 我刚刚检查了$.ajax 行上的错误ReferenceError:$ not defined
    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    相关资源
    最近更新 更多