![](/img/trans.png)
[英]Retrieve script content from jQuery.getScript or jQuery.ajax with dataType script
[英]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.action
和this.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.