Php 文件名未定义

Php 文件名未定义,php,javascript,jquery,ajax,dom,Php,Javascript,Jquery,Ajax,Dom,对,这就是我想要的解决方案。当用户单击“取消”按钮时,它将尝试查找要取消的文件的文件名,然后删除包含该文件名的数据库行 问题是它无法识别文件名,因为它表示imagecancelname=undefined。由于未定义,它无法删除包含文件名的数据库行,因为它无法识别文件名。通过执行打印$imagecancelsql,在我取消上载文件后,它将显示以下内容: DELETE FROM Image WHERE ImageFile = 'ImageFiles/undefined' 因此,问题是如何让ima

对,这就是我想要的解决方案。当用户单击“取消”按钮时,它将尝试查找要取消的文件的文件名,然后删除包含该文件名的数据库行

问题是它无法识别文件名,因为它表示
imagecancelname=undefined
。由于未定义,它无法删除包含文件名的数据库行,因为它无法识别文件名。通过执行打印$imagecancelsql,在我取消上载文件后,它将显示以下内容:

DELETE FROM Image WHERE ImageFile = 'ImageFiles/undefined'
因此,问题是如何让
imagecancelname
识别将被取消的文件名,以便能够使用它删除包含文件名的数据库行

以下是当前的表单代码:

var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return startImageUpload(this);' class='imageuploadform' >" + 
  "Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" + 
  "<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" +     
  "</p><p class='imagef1_cancel' align='center'></p>" +
  "<iframe class='upload_target' name='upload_target' src='#' style='width:0;height:0;border:0px;solid;#fff;'></iframe></form>");
var$fileImage=$(“”+
“图像文件:

”+ "" + “

”+ "");
下面是startImageUpload函数,在上载文件时显示cancel(取消)按钮,如果用户单击cancel(取消)按钮,则包含cancel(取消)按钮功能:

    var sourceImageForm; 

         function startImageUpload(imageuploadform, imagecancelname){

  $(imageuploadform).find('.imagef1_upload_process').css('visibility','visible');
  $(imageuploadform).find('.imagef1_cancel').css('visibility','visible');
  $(imageuploadform).find('.imagef1_upload_form').css('visibility','hidden');
  sourceImageForm = imageuploadform;

/*The above would show and hide elements within the form the file is being uploaded.
For example if I have three forms and the second form is uploading a file, then it
shows and hides the elements within the second form only */

        $(imageuploadform).find('.imagef1_cancel').html('<div><button type="button" class="imageCancel" id="image_cancel_' + imagecancelname + '">Cancel</button></div>').find(".imageCancel").on("click", function(event) {
        $.ajax("cancelimage.php?imagecancelname=" + $(this).attr('id').slice(13));

});       
      return true;
}
var-sourceImageForm;
函数startImageUpload(imageuploadform,imagecancelname){
$(imageuploadform).find('.imagef1_upload_process').css('visibility','visible');
$(imageuploadform).find('.imagef1_cancel').css('visibility','visible');
$(imageuploadform).find('.imagef1_upload_form').css('visibility','hidden');
sourceImageForm=imageuploadform;
/*以上内容将显示和隐藏文件上载表单中的元素。
例如,如果我有三个表单,而第二个表单正在上载一个文件,那么
仅显示和隐藏第二个表单中的元素*/
$(imageuploadform).find('.imagef1_cancel').html('cancel').find('.imageCancel').on('click'),函数(事件){
$.ajax(“cancelimage.php?imagecancelname=“+$(this.attr('id')).slice(13));
});       
返回true;
}
最后,下面是cancelimage.php脚本,当用户单击Cancel按钮时,它将导航到此脚本,在这里,该脚本通过使用$GET方法查找文件名来删除数据库行

<?php

  // ... connected to DB

  $image_cancel_ = $_GET["imagecancelname"];
  $imagecancelsql = "
    DELETE FROM Image 
    WHERE ImageFile = 'ImageFiles/".mysql_real_escape_string($image_cancel_)."'
  ";

  print $imagecancelsql;

  mysql_close();

?>

我认为在完成上传之前,图像不应该存储在数据库中。如果图像被取消,则它将不会以DB为单位

为了回答未定义的确切问题,在jquery中,attr是获取markup属性。()

您应该在文件上载输入中添加id:

<input id='fileImage' name='fileImage' type='file' class='fileImage' />

我认为图像不应该存储在您的数据库之前完成上传。如果图像被取消,则它将不会以DB为单位

为了回答未定义的确切问题,在jquery中,attr是获取markup属性。()

您应该在文件上载输入中添加id:

<input id='fileImage' name='fileImage' type='file' class='fileImage' />

我猜浏览器不喜欢您在按钮上定义的用于保存文件路径的自定义属性。但是,您可以轻松地将此信息存储在标准属性中—
id
。试试这个JS:

function startImageUpload(imagecancelname){
  // All this can be chained into one since .html() returns the correct jQuery object
  $('.imagef1_cancel').eq(window.lastUploadImageIndex).html('<div><button type="button" class="imageCancel" id="image_cancel_' + imagecancelname + '">Cancel</button></div>').find(".imageCancel").on("click", function(event) {
    $.ajax("cancelimage.php?imagecancelname=" + $(this).attr('id').slice(13));
  });     
  return true;
}
函数startImageUpload(imagecancelname){
//因为.html()返回正确的jQuery对象,所以所有这些都可以链接成一个
$('.imagef1_cancel').eq(window.lastUploadImageIndex).html('cancel').find('.imageCancel').on('click',函数(事件){
$.ajax(“cancelimage.php?imagecancelname=“+$(this.attr('id')).slice(13));
});     
返回true;
}

我猜浏览器不喜欢您在按钮上定义的用于保存文件路径的自定义属性。但是,您可以轻松地将此信息存储在标准属性中—
id
。试试这个JS:

function startImageUpload(imagecancelname){
  // All this can be chained into one since .html() returns the correct jQuery object
  $('.imagef1_cancel').eq(window.lastUploadImageIndex).html('<div><button type="button" class="imageCancel" id="image_cancel_' + imagecancelname + '">Cancel</button></div>').find(".imageCancel").on("click", function(event) {
    $.ajax("cancelimage.php?imagecancelname=" + $(this).attr('id').slice(13));
  });     
  return true;
}
函数startImageUpload(imagecancelname){
//因为.html()返回正确的jQuery对象,所以所有这些都可以链接成一个
$('.imagef1_cancel').eq(window.lastUploadImageIndex).html('cancel').find('.imageCancel').on('click',函数(事件){
$.ajax(“cancelimage.php?imagecancelname=“+$(this.attr('id')).slice(13));
});     
返回true;
}

不确定它是否有用,但它不应该是
而不是
?@jbabey我刚看了w3schools,它肯定是
@user1391585-尽管在这里它们是正确的。@user1391585…我的拼写不正确。例如。显然。我不确定它是否有用,但它不应该是
而不是
?@jbabey我刚看了w3schools,它肯定是
@user1391585-尽管在这种情况下它们是正确的。@user1391585…我的拼写不正确。例如。很明显,当你们说在上传完成之前图片不应该在db中,这实际上是我想做的,但我不知道怎么做。问题是,当文件上传时,它插入了db行,当我按cancel时,因为文件正在上传过程中,所以它在数据库中插入了行。无论如何,我可以向您展示文件上传的php脚本,以便您可以看到何时插入数据库行吗?我不能使用文件输入文本框来检索文件名。原因是,若我第一次上传“Tulips.png”,在服务器上它会保存为“Tulips.png”,但若我第二次上传相同的文件,那个么在服务器上它会保存为“Tulips_2.png”。这是在php脚本中,它上载文件在php上载脚本中,有一个move_upload_file()函数。如果此功能成功,您将使用复制的文件更新数据库行。当您说图像在上载完成之前不应在数据库中时,这实际上是我想做的,但我不知道如何做。问题是,当文件上传时,它插入了db行,当我按cancel时,因为文件正在上传过程中,所以它在数据库中插入了行。无论如何,我可以向您展示文件上传的php脚本,以便您可以看到何时插入数据库行吗?我不能使用文件输入文本框来检索文件名。原因是如果我上传“Tuli”