在AJAX调用期间删除文件的扩展名

时间:2014-03-17 13:25:03

标签: javascript php jquery ajax

我有这个脚本,试图用AJAX调用删除图像。

PHP

 foreach ( $in_folder as $img => $v ) {

    echo '
        <span class="imageHolder">
         <a onclick="DeleteImage('.$img.'); return false;" href="javascript:;">X</a>
         <img src="uploads/' . $img .'"/>
            <span class="uploaded">
            </span>
        </span>';
    // print_r($in_folder);
    }

JS:

 function DeleteImage(img){

        $.ajax({
            url: 'delete.php',
            type: "POST",
            data: img,
            success: function(datos){
                console.log("check");
            }
        });
    }

delete.php

 if($_GET["action"]=="deleteimage")
    {
        $imagefile = $POST['img'];
        $img_path = 'uploads/' . $img;
        unlink ( $img_path ); 
    } 

问题是JS部分,我收到错误:

Error: ReferenceError: IMAGE_NAME is not defined
Source File: http://localhost/dev/_upload_test/
Line: 1

但是,PHP $img变量正在输出IMAGE_NAME.jpg

<a href="javascript:;" onclick="DeleteImage(IMAGE_NAME.jpg); return false;">X</a>

不应该出现错误

Error: ReferenceError: IMAGE_NAME.jpg is not defined

(扩展在哪里?)

显然,我的扩展.jpg正被ajax流程切断,但自my JS skills are <= 0以来,我无法理解过程中出现的问题。

2 个答案:

答案 0 :(得分:3)

您需要更改

data: img,

data: { img:img },

或使用

data: "img="+img,

您还需要使用'"换行字符串。

<a href="javascript:;" onclick="DeleteImage('IMAGE_NAME.jpg'); return false;">X</a>
<!--                                      --^--          --^--                  -->

将您的PHP代码更改为这样,

foreach ( $in_folder as $img => $v ) {
echo '
        <span class="imageHolder">
         <a onclick="DeleteImage(\''.$img.'\'); return false;" href="javascript:;">X</a>
         <img src="uploads/' . $img .'"/>
            <span class="uploaded">
            </span>
        </span>';
    // print_r($in_folder);
    }
?>

答案 1 :(得分:1)

您的参考错误的原因&#34; IMAGE_NAME未定义&#34;将在以下行中,文件名周围没有引号。

<a href="javascript:;" onclick="DeleteImage(IMAGE_NAME.jpg); return false;">X</a>

Javascript然后希望您的IMAGE_NAME成为对象,并尝试调用未定义对象的jpg属性。那就是你的&#34; .jpg&#34; &#39;消失&#39;

php代码将是:

foreach ( $in_folder as $img => $v ) {
    echo '
        <span class="imageHolder">
         <a onclick="DeleteImage('."'".$img."'".'); return false;" href="javascript:;">X</a>
         <img src="uploads/' . $img .'"/>
            <span class="uploaded">
            </span>
        </span>';
    // print_r($in_folder);
}

注意&#34;&#39;&#34; (双引号,单引号,双引号)我在DeleteImage函数中添加了$ img。

希望这能帮到你!

编辑:这会将删除链接更改为:

<a href="javascript:;" onclick="DeleteImage('IMAGE_NAME.jpg'); return false;">X</a>