0

我在将参数 (Id) 发送到 javascript 函数时遇到问题。让我告诉你基本的想法:我有一个训练模型,每个训练模型都有 1 个调查。我在下面的代码中所做的是为员工参加的每个培训生成一个弹出链接并显示一个弹出窗口。为此,我使用了 Ajax ActionLink,并在每个部分显示弹出窗口,我创建了一个 id 为 Training 的 div。所以当 onComplete 我调用一个 javascript 函数 openPopup 来显示弹出窗口但它没有。所以总而言之,我有不同的 div,我将在其中弹出一个窗口,我想将 div 的 id 传递给 javascript 函数。你能告诉我如何解决这个问题吗?

谢谢你。

  <script type="text/javascript">
        $(document).ready(function (id) {
            $(id).dialog({
                autoOpen: false,
                title: 'Anket',
                width: 500,
                height: 'auto',
                modal: true
            });
        });
        function openPopup(id) {
            $(id).dialog("open");
        }
    </script>

   foreach (var training in Model.TrainingList)
   {
      <tr>
        <td class="view_detail_label">
                        Eğitim Adı
         </td>
          <td>

          @Ajax.ActionLink(training.Name.Name,
                           "AddSurvey", 
          new { employeeId = Model.Id, trainingId = training.Id },
           new AjaxOptions
             {
            UpdateTargetId = training.Id.ToString(),
              HttpMethod = "GET",
              InsertionMode = InsertionMode.Replace,
               LoadingElementId = "context",
               OnComplete = "openPopup('"+training.Id.ToString()+"')"
                 })

               <div id="@training.Id" style="display:none;"/>  

                    </td>                        
                </tr>                 
               }           
            }
        </table>
4

1 回答 1

2

你可以使用一个简单Html.ActionLink的,你可以不显眼的 AJAXify,它给你更多的灵活性。此外,您似乎使用了id您的函数的一些参数,这些参数document.ready不存在且无处可去。document.ready回调不接受任何参数。

所以:

<script type="text/javascript">
    $(document).ready(function () {
        $('.addSurvey').click(function() {
            $.ajax({
                url: this.href,
                type: 'GET',
                cache: false,
                context: this,
                success: function(result) {
                    $(this).next('.result').html(result).dialog({
                        autoOpen: true,
                        title: 'Anket',
                        width: 500,
                        height: 'auto',
                        modal: true
                    });
                }
            });
            return false;
        });
    });
</script>

<table>
    @foreach (var training in Model.TrainingList)
    {
       <tr>
           <td class="view_detail_label">
               Eğitim Adı
           </td>
           <td>
               @Html.ActionLink(
                   training.Name.Name, 
                   AddSurvey, 
                   new { 
                       employeeId = Model.Id, 
                       trainingId = training.Id 
                   },
                   new {
                       @class = "addSurvey"
                   }
               )
               <div class="result"></div>
           </td>                        
       </tr>                 
    }
</table>

另外,我强烈建议您将脚本移出单独的 javascript 文件,不要将您的标记与脚本混合。

备注:因为您在模式对话框中打开 AJAX 调用的结果,所以我不太明白在每一行中都有一个结果 div 的意义。您可以简单地将其从 中移出<table>并拥有一个。

于 2013-05-20T12:21:25.253 回答