Ajax返回值显示代码

时间:2016-08-05 08:28:40

标签: javascript php ajax

我有一个用户上传图像的表单,然后图像通过Ajax中继到PHP。将图像上传到服务器后,PHP将回显$target_file到Ajax。 $target_file本质上是图片的网址。 Ajax将接受该变量,然后通过" readonly"显示它。以相同的形式输入文本框。在测试了我的内容后,图像正在成功上传。唯一的问题是,当成功上传图像时,PHP脚本的整个代码将显示在" readonly"输入框而不是应显示图像网址的$target_file变量。

以下是我所拥有的:

HTML

<form class="image_upload" method="post" action="ajax.php">
    <input name="server_upload" type="file">
     <input type="text" name="image_url" readonly>
    <input type="submit" value="UPLOAD TO SERVER">
</form>

的Ajax

$('.image_upload').on('submit', function(e) {
        e.preventDefault();
        e.stopImmediatePropagation();
        if ($('.image_upload').valid())
        {

            $.ajax({
              type: 'POST',
              url: 'ajax.php',
              data: new FormData(this),
              processData: false,
              contentType: false,
              success: function(data) {
                     $('input[name=image_url]').val(data);
              }
            })
     }
 })

PHP

if (isset($_FILES["server_upload"]))
    {
        $name = $_FILES["server_upload"]["name"];
        $tempName = $_FILES["server_upload"]["tmp_name"];
        $target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name";
        if (getimagesize($target_file) == true)
        {
            $ext = pathinfo($name, PATHINFO_EXTENSION);     
            $name = basename($name, "." . $ext);
            $name = $name . uniqid() . "." . $ext;
            $target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name";
        }

        move_uploaded_file($tempName, $target_file);
      echo $target_file;
    }

如何解决这个问题,以便显示网址?为什么打印出我所有的PHP代码?

2 个答案:

答案 0 :(得分:3)

.php文件通常是HTML文件,其中包含嵌入式 PHP。必须使用<?php开始并?>结束,将PHP的嵌入部分标记为PHP。因此,请将代码放在代码中,以便运行代码,而不是将其视为HTML文本:

<?php
if (isset($_FILES["server_upload"]))
    {
        $name = $_FILES["server_upload"]["name"];
        $tempName = $_FILES["server_upload"]["tmp_name"];
        $target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name";
        if (getimagesize($target_file) == true)
        {
            $ext = pathinfo($name, PATHINFO_EXTENSION);     
            $name = basename($name, "." . $ext);
            $name = $name . uniqid() . "." . $ext;
            $target_file = $_SERVER['DOCUMENT_ROOT'] . "/stories/media/images/$name";
        }

        move_uploaded_file($tempName, $target_file);
      echo $target_file;
    }
?>

答案 1 :(得分:0)

如果您没有某种类似 apache nginx 的网络服务器执行php脚本或者如果提到的网络服务器不知道如何处理php文件。在这种情况下,php文件将被视为纯文本文件。