Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery/ajax在onClick期间没有更新函数内部的变量,这是一个奇怪的问题_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript jquery/ajax在onClick期间没有更新函数内部的变量,这是一个奇怪的问题

Javascript jquery/ajax在onClick期间没有更新函数内部的变量,这是一个奇怪的问题,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个小问题,似乎三天内都无法解决。我不这么认为 是一个代码错误,但我理解变量以及为什么onClick事件不能正常工作 基本上我有一个页面和一个表格,里面有很多行。每一行都有注释图标,当您单击该图标时,jquery模式将打开一个文本区域,您可以编写您的注释 comment按submit(在模式上)并通过ajax发送评论 一切正常,除了: 问题是,如果我有10行,并且在没有刷新/重新加载页面的情况下,如果我在 一个接一个,提交我的评论,所有评论都插入第一行 这就好像,如果我打开第一个弹出窗口并提

我有一个小问题,似乎三天内都无法解决。我不这么认为 是一个代码错误,但我理解变量以及为什么onClick事件不能正常工作

基本上我有一个页面和一个表格,里面有很多行。每一行都有注释图标,当您单击该图标时,jquery模式将打开一个文本区域,您可以编写您的注释 comment按submit(在模式上)并通过ajax发送评论

一切正常,除了:

问题是,如果我有10行,并且在没有刷新/重新加载页面的情况下,如果我在 一个接一个,提交我的评论,所有评论都插入第一行

这就好像,如果我打开第一个弹出窗口并提交,当我打开第二个弹出窗口时,第一个弹出窗口的内容 正在持续

下面是一个示例代码

这是一个表示模态的简单代码

<!-- very minimilized example because the modal has no issues -->
<div class="modal fade" id="comment-viewer">
  <input type="comment" name="" id="my-comment">
  <input type="button" name="submit" class="btn-primary">
</div>
因此,在上面的例子中,它在每个注释图标上按下它应该更新id,获取注释 并将其发送到db

但它所做的只是将第一条打开的注释id为的所有注释插入数据库


我已禁用缓存,但仍然没有任何内容

您需要在弹出窗口关闭时重置字段,并在再次显示模式时使用新值重新填充字段

例如,假设当你关闭弹出窗口时,你的评论框必须像这样清空

$("#comment-viewer").on("hidden.bs.modal", function () {
  $('#my-comment').val('');
});

希望您理解这一点。

当弹出窗口关闭时,您需要重置字段,并在再次显示模式时使用新值重新填充字段

例如,假设当你关闭弹出窗口时,你的评论框必须像这样清空

$("#comment-viewer").on("hidden.bs.modal", function () {
  $('#my-comment').val('');
});
希望您理解这一点。

再试一次;)。请尝试更改
打开\u注释\u模式(e)
如:

function open_comment_modal(e){
     var id = e.dataset.id
     // code to display the modal goes here. (has no issues)
     $('.btn-primary').off('click');
     $('.btn-primary').click(function(){
     ...
因为每次调用
open\u comment\u modal
,都会将另一个单击处理程序附加到
.btn primary
,而旧的处理程序仍然存在。因此,在附加新的处理程序之前,必须清除上一个(无效)处理程序。

第二次尝试;)。请尝试更改
打开\u注释\u模式(e)
如:

function open_comment_modal(e){
     var id = e.dataset.id
     // code to display the modal goes here. (has no issues)
     $('.btn-primary').off('click');
     $('.btn-primary').click(function(){
     ...

因为每次调用
open\u comment\u modal
,都会将另一个单击处理程序附加到
.btn primary
,而旧的处理程序仍然存在。因此,在附加新的处理程序之前,必须清除以前的(无效)处理程序。

这只是因为
id
变量范围问题。您正在
open\u comment\u模态方法
中附加单击处理程序。你不应该这样。与此相反,您应该将click处理程序附加到该函数的外侧,并从click处理程序内部的dom数据集中获取id。

这仅仅是因为
id
变量范围问题。您正在
open\u comment\u模态方法
中附加单击处理程序。你不应该这样。相反,您应该将单击处理程序附加到该函数的外侧,并从单击处理程序内部的dom数据集中获取id。

打开模式后,您需要重置文本,单击提交按钮后读取文本

这是更新后的代码

var _Id;
var _comment;
function open_comment_modal(e){
   _Id = e.dataset.id;
   $("#my-comment").val('');
    // code to display the modal goes here. (has no issues)
  }
$( document ).ready(function() {
  $('.btn-primary').click(function(){
    _comment = $("#my-comment").val();
    var dataString = "id=" + _Id + "&comment=" + _comment
      ajaxRequest = jQuery.ajax({
        type: "POST",
        url: "foo.php",
        data: dataString,
          success: function(response) {
          $("#my-comment").val('');
          // code to hide the modal goes here.
        }
    }); 
  });
});

打开modal后需要重置文本,单击submit按钮后需要读取文本

这是更新后的代码

var _Id;
var _comment;
function open_comment_modal(e){
   _Id = e.dataset.id;
   $("#my-comment").val('');
    // code to display the modal goes here. (has no issues)
  }
$( document ).ready(function() {
  $('.btn-primary').click(function(){
    _comment = $("#my-comment").val();
    var dataString = "id=" + _Id + "&comment=" + _comment
      ajaxRequest = jQuery.ajax({
        type: "POST",
        url: "foo.php",
        data: dataString,
          success: function(response) {
          $("#my-comment").val('');
          // code to hide the modal goes here.
        }
    }); 
  });
});

我已经做了所有这些。事实上,我在代码中有4个地方放了“$”(“#我的评论”).val(“”)`在代码中(我会更新我的答案),它不起作用。我已经做了所有这些。事实上,我在代码中放了“$”(“#我的评论”).val(“”)`在4个地方(我会更新我的答案),它不起作用。我只是尝试了一下,但仍然没有效果。与上一次相比没有变化issue@meskerem你把我上面提到的代码改成树了吗?我刚试过,但还是没有效果。与上一次相比没有变化issue@meskerem你有没有把我上面提到的确切代码改成T码?非常感谢。我真不敢相信这是个问题,我这么想你。我不敢相信这就是问题所在