使用AJAX在同一页面中调用特定的PHP函数

使用AJAX在同一页面中调用特定的PHP函数,php,ajax,jquery,file-upload,image-uploading,Php,Ajax,Jquery,File Upload,Image Uploading,我正在使用PHP、Jquery和Ajax创建一个小部件,可以上传和裁剪图像。当我们选择图像并提交表单时。执行以下代码,上载图像: <?php $valid_formats = array("jpg", "png", "gif", "bmp"); if(isset($_POST['submit'])) { $name = $_FILES['photoimg']['name']; $size = $_FILES[

我正在使用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(设置($\u POST['submit'])

那么,有没有办法使用AJAX调用PHP函数呢

提前感谢….

您可以使用

if($_POST)
检查而不是

if(isset($_POST['submit']))

嘿,因为您想上传文件,并且在选择文件时不想刷新页面。您可以使用jquery的
$.ajax或$.post
我更喜欢
$.ajax
。在url参数中,您必须给出php文件的名称,即上面的php脚本。此外,您还必须对php脚本进行一些更改,因为您不打算发布,您必须删除该条件
if(设置($\u POST['submit'])
如果您获得成功,在ajax调用中您将得到结果。您可以使用
json
将php脚本中的结果返回到您的jquery,并在jquery中解析它。 正如前面所说,您必须在jquery中使用change(),因为您不想通过单击任何按钮来使用post

事实上,我一直在寻找一种可以在选择图像后通过AJAX提交PHP表单并上传图像的工具。我找到了这个密码

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

这里,photoimg是输入类型file的ID,imageform是表单的ID,preview是要显示预览的div的ID。选择文件后,将触发更改事件并提交表单。您可以参考。

查看[$.post](),并将其组合为“$”('form')。on('submit',function(e){e.preventDefault();$.ajax('url-to-post-to',dataObject)}@Tim我没有提交表单,我想在文件被选中时执行此操作,而不是在您要查找的
$('file-select')。on('change',function(){)?有一件事你需要知道:你不能从JS调用PHP,PHP被转换成HTML,客户端(浏览器)对此一无所知。。但是,您可以通过AJAX将数据发送到php文件,并让它保存/返回您需要的内容。@Tim非常感谢。那么我想,我应该试试别的。我不是在提交表单,我想在文件被选中时在