Javascript ajax()发布到php数据库查询
我看到很多这样的问题,但是,我甚至在使用.ajax()函数时都遇到了困难。我在这里解决了以前的一个问题: 不过,我的后续行动从未得到回应。我不会再次发布代码,而是将其留在那里(除非另有说明)。无论如何,你能帮我弄明白1:获取Javascript ajax()发布到php数据库查询,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我看到很多这样的问题,但是,我甚至在使用.ajax()函数时都遇到了困难。我在这里解决了以前的一个问题: 不过,我的后续行动从未得到回应。我不会再次发布代码,而是将其留在那里(除非另有说明)。无论如何,你能帮我弄明白1:获取var字段和var文本,以反映我的更改。和2:如何访问tr的id,因为它是一个变量。如何在.parent()中设置它?谢谢 编辑: 这是我的剧本: <script type="text/javascript"> $(document).ready(func
var字段
和var文本
,以反映我的更改。和2:如何访问tr的id
,因为它是一个变量。如何在.parent()中设置它?谢谢
编辑:
这是我的剧本:
<script type="text/javascript">
$(document).ready(function()
{
$(".edit_td").click(function()
{
$(this).children(".text").hide();
$(this).children(".editbox").show();
}).change(function()
{
alert("working");
var id=$(this).parent();
var field=$("#input_"+ id).val();
var text=$(this).children(".editbox").val();
var dataString = 'id='+ id +'&field='+ field +'&text='+ text;
//$("#first_"+ID).html('<img src="load.gif" />'); // Loading image
if(input != text)
{
$.ajax({
type: "POST",
url: "table_edit_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$("#first_"+ID).html(first);
$("#last_"+ID).html(last);
}
});
}
else
{
alert('Enter something.');
}
});
// Edit input box click action
$(".editbox").mouseup(function()
{
return false
});
// Outside click action
$(document).mouseup(function()
{
$(".editbox").hide();
$(".text").show();
});
});
</script>
首先,您需要将更改事件绑定到输入框,而不是它的父td,因为我假设您只希望在输入值更改时运行函数。您还需要将td绑定从click更改为mouseup,并添加stopPropagation调用,以避免触发文档上的mouseup事件
$(".edit_td").mouseup(function(e)
{
$(this).children(".text").hide();
$(this).children(".editbox").show();
e.stopPropagation();
}).children('.editbox').change(function() {
要获取tr的id,请执行以下操作:
var id = $(this).closest('tr').attr('id');
要获取文本,请执行以下操作:
var text = $(this).val();
获取字段的最佳方法可能是为表示列标题的输入框指定一个数据属性。在PHP中,生成tds时:
foreach ($fields as $f)
{
echo "<td class='edit_td'><span id='span_".$rowid."' class='text'>".$row[$f]."</span>
<input type='text' value='".$row[$f]."' class='editbox' id='input_".$rowid."' data-field='".$f."'/> </td>";
}
此外,您的查询字符串可能编码不正确。最好将数据作为对象提供:例如,{id:id,field:field,text:text}
,并让jQuery为您处理url编码
我注意到您正在将跨度的id设置为$rowid
。这样做时,您的span id将不是唯一的,并且可能会出现问题。如果您需要给他们一个id,请尝试类似于id='span_389;'.$rowid.'.-“$f。““
您的上一个问题没有什么可以理解的,请将您的代码粘贴到这里,谢谢,我编辑它是为了反映一个更详细的问题。请制作fiddle,您肯定是太复杂了。谢谢。我做了更改,并将其放在var-dataString
:document.write(“+dataString+”)代码>我没有看到任何显示。警报也不起作用。我假设这意味着函数没有运行,对吗?一旦文本框失去焦点,就会触发更改事件。我也是这么想的。不过运气不好,我只是想澄清一下。单击td,文本框将替换跨度。您更改了文本框的值,删除了文本框的焦点,但什么也没有发生?实际上,没有。单击范围后,文本框将替换它,然后,一旦文本框失去焦点,原始范围将替换文本框。在那之后什么也没发生。
var text = $(this).val();
foreach ($fields as $f)
{
echo "<td class='edit_td'><span id='span_".$rowid."' class='text'>".$row[$f]."</span>
<input type='text' value='".$row[$f]."' class='editbox' id='input_".$rowid."' data-field='".$f."'/> </td>";
}
var field = $(this).data('field');