道歉,如果這已經回答過了(當我搜索的檔案我無法找到答案)形式提交使用jQuery
我有受密碼保護的網頁:
<?php
if($_POST['pw'] == 'pw')
{
//Page content
} else
{
//Display password form
}
?>
在該頁面的內容,我有另一種形式,這是我想使用jQuery提交,並有下面的代碼:
<script type='text/javascript'>
var dataString = $('input#input1').val();
$(function() {
$('#submit').click(function()
{
$.ajax({
type: 'POST',
url: 'p2.php',
data: dataString,
dataType: html,
success: function(data2) {
$('#testResult').html(data2);
}
});
return false;
});
});
</script>
<form name='form1' id='form1' action=''>
<fieldset>
<label for='input1' id='input1_label'>Input 1</label>
<input type='text' name='input1' id='input1' size='30' />
<input type='submit' value='Update/reset' id='submit' class='buttons' />
</fieldset>
</form>
<div id='#testResult'></div>;
然而,點擊提交,然後發送到p1.php形式輸入1 =測試(即數據字符串正在發送到p1.php,而不是p2.php)。如果我編輯代碼並刪除dataType:html
和data2
的2個引用,則不會發生(事實上,沒有任何反應,所以我假定jQuery將數據提交給表單)。我也將type
更改爲'GET',因此在同一頁上的2個POST請求導致問題,但這並未改變結果。
我錯過了什麼從p2.php獲取信息(即data2
)並顯示它?
編輯
感謝評論指出一個錯字,我已經改變了dataType: html
到dataType: 'html'
- 這個現在不會導致頁面重定向到p1.php輸入1 =測試,但再次? ,它不會做任何事情(當它仍然應該返回的data2
值)
EDIT 2
我已經更新代碼,以便dataString
現在是:
var dataString = $('input#input1').val();
dataString = 'var1='+dataString;
但是這並沒有什麼不同
爲了澄清,我只是p2.php包含以下內容:
<?php
echo "<p>HELLO!</p>";
?>
編輯3
我所做的更改我的代碼由Damien在下面提出;我收到「作品」的警報!但似乎沒有任何東西從p2.php返回,並且沒有任何內容插入到#testResult
div中。
當然,它應該是'dataType:'html' '?你想說它的值是字符串'html'而不是名爲'html'的變量的值。 – 2012-01-18 11:48:46
謝謝 - 我編輯的問題反映了這一點! – ChrisW 2012-01-18 11:52:09
從您對發生的事情的描述中,聽起來像默認表單操作正在觸發,而不是您綁定到按鈕的單擊事件的代碼。 – psynnott 2012-01-18 11:53:56