繁体   English   中英

使用AJAX简单调用php脚本不起作用

[英]Simple call to php script using AJAX not working

我是javascript和AJAX的新手。 我有动态HTML表,在其中添加了带有textarea的新列。 我创建了一个javascript数组,存储了我希望传递给我的php脚本的所有textarea的名称。
这是我的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>";
}
?>

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

这样改变你的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!");
        }

    });

希望它能起作用

试试这个对我有用:

你的剧本

 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);
}
?>

您需要从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标签,然后查看正在进行的请求。

它会显示:

  • 正在发布参数

  • 后端文件的输出。

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

包括在您的头部标签中

<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);
}
?>

尝试这个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM