2

我正在使用 PHP、Jquery 和 Ajax 创建一个可以上传和裁剪图像的小部件。当我们选择一个图像,并提交表单时。执行以下代码,上传图片:

<?php

    $valid_formats = array("jpg", "png", "gif", "bmp");
    if(isset($_POST['submit']))
        {
            $name = $_FILES['photoimg']['name'];
            $size = $_FILES['photoimg']['size'];
            if(strlen($name))
                {
                    list($txt, $ext) = explode(".", $name);
                    if(in_array($ext,$valid_formats) && $size<(1024*1024))
                        {
                            $actual_image_name = time().substr($txt, 5).".".$ext;
                            $tmp = $_FILES['photoimg']['tmp_name'];
                            if(move_uploaded_file($tmp, $path.$actual_image_name))
                                {
                                    $image="<img src='uploads/".$actual_image_name."' id=\"photo\" style='max-width:500px' >";

                                }
                            else
                                echo "failed";
                        }
                    else
                        echo "Invalid file formats..!";                 
                }
            else
                echo "Please select image..!";
        }
?>

提交表单时,页面正在刷新。我想在不刷新页面的情况下执行此操作。

假设如果我把上面的 PHP 代码放在一个 PHP 函数中,而不使用
if(isset($_POST['submit']))

那么,有什么方法可以使用 AJAX 调用 PHP 函数。

提前致谢....

4

3 回答 3

1

实际上,我一直在寻找可以在选择图像并上传图像后立即通过 AJAX 提交 PHP 表单的东西。我找到了这段代码,

$('#photoimg').live('change', function(){ 
     $("#preview").html('');
     $("#imageform").ajaxForm({
        target: '#preview'
    }).submit();    
});

这里photoimg是输入类型文件的ID,imageform是表单的ID,preview是div的ID,预览要显示的地方。选择文件时,会触发更改事件并提交表单。你可以参考这个

于 2013-04-19T11:09:38.627 回答
0

嘿,因为您想上传文件并且不想在选择文件时刷新页面。您可以使用 jquery 的$.ajax or $.postI prefers $.ajax。因为你必须为 ajax 调用提供适当的参数。在 url 参数中你必须提供 php 文件的名称,即你上面的 php 脚本。你还必须在你的 php 脚本中做一些更改,因为你不会发布你if(isset($_POST['submit'])) 如果成功则必须删除条件 ,在 ajax 调用中您会得到结果。您可以使用json将结果从 php 脚本返回到您的 jquery,并在 jquery 中解析它。而且正如蒂姆所说,您必须在 jquery 中使用 change() 因为您不想通过单击任何按钮来使用 post。请参阅此 链接

于 2013-04-19T07:41:54.913 回答
0

您可以使用

if($_POST)

检查而不是

if(isset($_POST['submit']))
于 2013-04-19T06:41:17.440 回答