簡體   English   中英

在jQuery.ajax()中使用dataType'script'調用DOM元素的引用

[英]Reference calling DOM element in jQuery.ajax() with dataType 'script'

假設我有以下情形:

<form action="/something.php" method="GET">Click me</div>

<script type="text/javascript"><!--
    $('form').submit(function(e) {
        $.ajax({
            url: this.action,
            method: this.method,
            dataType: 'script'
        });
        return false;
    });
//--></script>

我的問題與something.php返回的JavaScript結果有關。 我想參考表格。 通常,我會通過this引用(就像我對this.actionthis.method所做的那樣)。 但是,當我返回以下內容時,這似乎不起作用:

alert(this);  // displays: [object Window]

看起來jQuery正在以窗口的名義而不是實例化事件的元素來執行腳本。 有沒有一種方法可以輕松引用實例化事件的對象,而不必引用返回的JavaScript中的元素ID或其他內容?

我發現我可以執行下列操作,使this在應對引用調用對象,但我覺得這更是一個比黑客應該要求的:

<form action="/something.php" method="GET">Click me</div>

<script type="text/javascript"><!--
    $('form').submit(function(e) {
        $.ajax({
            url: this.action,
            method: this.method,
            dataType: 'text',
            success: function(data) {
                eval('(function() {' + data + '}).call(this);');
            }
        });
        return false;
    });
//--></script>

以這種方式嘗試:

編輯:

HTML:

<div>
   <form id="myCorrectForm" action="/something.php" method="GET">
     <input type="submit" value="Click me" />
   </form>
</div>

JS:

<script type="text/javascript"><!--

   // in this environment is created for the variable "frmRef" public
   var frmRef = null;
   $('#myCorrectForm').submit(function(e) {
      frmRef = $(this);
      $.ajax({
        url: frmRef.attr("action"),
        method: frmRef.attr("method"),
        dataType: 'script'
      });
      return false;
   });

//--></script> 

/something.php中的js:

alert($(window.parent.frmRef).attr('id'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM