从模式窗口使用jquery和php重命名文件
我正在尝试从模式窗口重命名文件。模式窗口运行良好,用于重命名文件的php代码也运行良好。我已经尝试了许多不同的方式来发送数据,而不退出 表单获取链接图像的值:名称、目录和不同的操作:删除、更新和调整大小。因此,当我单击链接时,它会打开带有这些值的模式窗口(我还注意到,每次单击其他图像链接时,该值是相同的) 问题是没有发送任何值。我认为在获取值时存在问题:例如,val()是一个jQuery方法。值是DOM元素的属性,我想知道如何解决这个问题 html代码:从模式窗口使用jquery和php重命名文件,php,jquery,Php,Jquery,我正在尝试从模式窗口重命名文件。模式窗口运行良好,用于重命名文件的php代码也运行良好。我已经尝试了许多不同的方式来发送数据,而不退出 表单获取链接图像的值:名称、目录和不同的操作:删除、更新和调整大小。因此,当我单击链接时,它会打开带有这些值的模式窗口(我还注意到,每次单击其他图像链接时,该值是相同的) 问题是没有发送任何值。我认为在获取值时存在问题:例如,val()是一个jQuery方法。值是DOM元素的属性,我想知道如何解决这个问题 html代码: <div id="
<div id="dialogo" title="Editar Imagen">
<p class="validateTips">Campo titulo requerido.</p>
<!--action="" method="post"-->
<form id="update" >
<fieldset>
<label for="titulo">Titulo</label>
<input type="text" name="titulo" id="titulo" class="text ui-widget-content ui-corner-all" />
<label for="Alt">Alt</label>
<input type="text" name="Alt" id="Alt" class="text ui-widget-content ui-corner-all" />
<label for="descripcion">Descripcion</label>
<input type="text" name="descripcion" id="descripcion" class="text ui-widget-content ui-corner-all" />
</fieldset>
</form>
</div>
Campo Titolo Requeriedo
提特罗
中高音
描述
ajax/jquery代码:
<script type="text/javascript">
$(document).ready(function(){
var fname=$('a.ico-resize').attr("id");
var directory=$('a.ico-resize').attr("rel");
var deletecount=$('a.ico-resize').attr("value");
$('#titulo').val(fname);
$('#Alt').val(directory);
var descripcion = $("input#descripcion").val();
var dataString = 'descripcion='+ descripcion + '&titulo=' + titulo + '&Alt=' + Alt;
// var data_string = $("#update").serialize();
// Damos formato a la Ventana de Diálogo
var dialog = $("#dialogo").dialog({
// Indica si la ventana se abre de forma automática
autoOpen: false,
// Indica si la ventana es modal
modal: true,
// Largo
//width: 400,
// Alto
//height: 280,
// Creamos los botones
height: 300,
width: 350,
buttons: {
'Rename Image': function() {
// Mostrar Versión de PHP
$.ajax({
// Antes de realizar la llamada mostramos el ajax load
beforeSend: function(){
$('#respuestaAjax').html('<img id="loader" src="images/loading.gif"/>');
},
//cache: false, // Indicamos que no se guarde en cache
type: 'post', // Variables GET
url:'rename_img.php', // srcript a ejecutar
data: dataString,
//'titulo=titulo&descripcion=descripcion&Alt=Alt',
//$("form#update").serialize(),
//{"file":fname,"directory":directory, "descripcion":descripcion}, // paso de datos
// cuando es exitoso el llamado
success: function(response){
$('#respuestaAjax').html(response);
$('#' + deletecount).remove();
dialog.dialog( "close" );
}
});
},
Cerrar: function() {
// Cerrar ventana de diálogo
dialog.dialog( "close" );
}
}
});
$("a.ico-resize").click( function(e) {
e.preventDefault();
// dialog.dialog("open");
dialog.dialog('open');
// prevent the default action, e.g., following a link
return false;
});
});
</script>
$(文档).ready(函数(){
var fname=$('a.ico-resize').attr(“id”);
var目录=$('a.ico-resize').attr(“rel”);
var deletecount=$('a.ico-resize').attr(“值”);
$('titulo').val(fname);
$('#Alt').val(目录);
var descripion=$(“输入描述”).val();
var dataString='description='+description+'&titulo='+titulo+'&Alt='+Alt;
//var data_string=$(“#更新”).serialize();
//达莫斯·formato a la Ventana de Diálogo酒店
var dialog=$(“#dialogo”).dialog({
//这是自成体系的标志
自动打开:错误,
//印度语
莫代尔:是的,
//拉戈
//宽度:400,
//中音
//身高:280,
//波托内斯奶油酒店
身高:300,
宽度:350,
按钮:{
“重命名图像”:函数(){
//Mostrar PHP版本
$.ajax({
//阿贾克斯负载的实现成本
beforeSend:function(){
$('#respuestaAjax').html('');
},
//cache:false,//Indicamos que no se guarde en cache
类型:'post',//变量获取
url:'rename_img.php',//srcript a ejecutar
数据:dataString,
//‘titulo=titulo&descripion=descripion&Alt=Alt’,
//$(“表单#更新”).serialize(),
//{“file”:fname,“directory”:directory,“descripion”:descripion},//paso de datos
//卡多·埃希托索·埃拉马多酒店
成功:功能(响应){
$('#respuestaAjax').html(响应);
$('#'+deletecount).remove();
dialog.dialog(“关闭”);
}
});
},
Cerrar:函数(){
//Cerrar ventana de diálogo
dialog.dialog(“关闭”);
}
}
});
$(“a.ico-resize”)。单击(函数(e){
e、 预防默认值();
//dialog.dialog(“打开”);
dialog.dialog(“打开”);
//防止默认操作,例如,跟踪链接
返回false;
});
});
php代码:
<?php
$dir = $_POST['Alt'];
$file = $_POST['titulo'];
$nuevo= $_POST['descripcion'];
$img = $dir."/".$file;
$imagen = $dir."/".$nuevo;
//unlink ($img);
rename($img, $imagen);
echo $imagen;
?>
解决了的 最后,所有代码都适用于此代码:
<script type="text/javascript">
$(function(){
var fname=$('a.ico-resize').attr("id");
var directory=$('a.ico-resize').attr("rel");
var deletecount=$('a.ico-resize').attr("value");
$('#titulo').val(fname);
$('#Alt').val(directory);
var descripcion = $('#descripcion').val();
var data_string = $("#update").serialize();
var dialog = $("#dialogo").dialog({
autoOpen: false,
modal: true,
height: 300,
width: 350,
buttons: {
Send: function(){
str = $("#update").serialize();
$.ajax({
beforeSend: function(){
$('#respuestaAjax').html('<img id="loader" src="images/loading.gif"/>');
},
cache: false,
type: 'POST',
url:'rename_img.php',
data: str,
contentType: "application/x-www-form-urlencoded",
success: function(response){
$('#respuestaAjax').html(response);
$('#' + deletecount).remove();
dialog.dialog( "close" );
}
});
},
Cerrar: function() {
dialog.dialog( "close" );
}
}
});
$("a.ico-resize").click( function(e) {
var id = $(this).attr('data-id');
var rel = $(this).attr('data-rel');
var value = $(this).attr('data-value');
$("#update").find("#titulo").val(id);
$("#update").find("#Alt").val(rel);
dialog.dialog('open');
});
});
</script>
$(函数(){
var fname=$('a.ico-resize').attr(“id”);
var目录=$('a.ico-resize').attr(“rel”);
var deletecount=$('a.ico-resize').attr(“值”);
$('titulo').val(fname);
$('#Alt').val(目录);
var descripion=$('#descripion').val();
var data_string=$(“#更新”).serialize();
var dialog=$(“#dialogo”).dialog({
自动打开:错误,
莫代尔:是的,
身高:300,
宽度:350,
按钮:{
发送:函数(){
str=$(“#更新”).serialize();
$.ajax({
beforeSend:function(){
$('#respuestaAjax').html('');
},
cache:false,
键入:“POST”,
url:'rename_img.php',
数据:str,
contentType:“application/x-www-form-urlencoded”,
成功:功能(响应){
$('#respuestaAjax').html(响应);
$('#'+deletecount).remove();
dialog.dialog(“关闭”);
}
});
},
Cerrar:函数(){
dialog.dialog(“关闭”);
}
}
});
$(“a.ico-resize”)。单击(函数(e){
var id=$(this.attr('data-id');
var rel=$(this.attr('data-rel');
var value=$(this.attr('data-value');
$(“#update”).find(“#titulo”).val(id);
$(“#update”).find(“#Alt”).val(rel);
dialog.dialog(“打开”);
});
});
就发送本身而言,代码看起来不错。我的意思是,它可能确实发送了请求,只是查询出错了。(您可以在firebug的控制台中检查请求是否真的发送)
您需要更改的是构建数据字符串的位置。一旦加载页面(在$(document).ready
函数中),您就可以构建它,这样在您更改模式窗口中的值后,它就永远不会重建
您应该将负责构建数据字符串的代码移动到a.ico-resize
的单击处理程序中
此外,我看不到titulo
和Alt
变量的设置位置,正如您在Firebug中看到的,它们设置错误
试试这个:
var dataString = 'descripcion='+ $('#descripcion').val() + '&titulo=' + $('#titulo').val() + '&Alt=' + $('#Alt').val();
dataString值应该是如下所示的JavaScript对象
{Key:value, key : value .....}
如果两者都有