我覺得這是我現在應該學會的東西,我敢肯定這是我錯過的小事,但我可以用澄清來確保我的方法是正確的。AJAX Post to self in PHP
我使用AJAX將數據發佈到self
這是一個包含php和html的文件。我可以編寫的PHP罰款,但一個成功的Ajax後,我怎麼只返回通過PHP處理的數據,而不是剩餘的HTML?只是發佈到單獨的腳本是否更好?
我覺得這是我現在應該學會的東西,我敢肯定這是我錯過的小事,但我可以用澄清來確保我的方法是正確的。AJAX Post to self in PHP
我使用AJAX將數據發佈到self
這是一個包含php和html的文件。我可以編寫的PHP罰款,但一個成功的Ajax後,我怎麼只返回通過PHP處理的數據,而不是剩餘的HTML?只是發佈到單獨的腳本是否更好?
如果你有PHP處理的文件的開頭POST請求,你可以做這樣的事情:
<?php
if (isset($_POST['somevar'])) {
/* do something */
exit(0);
}
?>
exit()
將在該行停止網頁的加載速度。例如,我認爲使用單獨的腳本來處理動態AJAX請求會更好一些。
感謝您的輸入! –
它總是取決於你的需求,但如果使用相同的腳本就足夠了,那就去做吧。
如果您希望腳本不發送任何比你的答案多爲XML HTTP請求,發送數據後,使用exit();
在PHP,這將使得腳本結束在這一點上。
您可以刮除生成文檔的更改部分,並將其插入原始頁面。通過這種方式,您還可以讓您的網頁適用於JavaScript禁用的用戶,而不是專門做任何事情。
例子:
<html><title>Unobtrusive AJAX Example</title>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">
</script><script type="text/javascript">
$("form.ajax[id]").live('submit', function() {
$(this).find("input[type='submit']").attr("disabled", true);
$.ajax({
type: $(this).attr('method') || 'POST',
url: $(this).attr('action') || window.location.pathname,
data: $(this).serialize(),
context: $(this),
success: function(data) {
$(this).html(
$(data).find("#" + $(this).attr("id")).html()
);
}
});
return false;
});
</script>
</head><body>
<div><form method="post" class="ajax" id="main">
<p><?php echo date('H:i:s'); ?></p>
<p><input type="submit"></p>
</form></div>
<!-- keep the div: you got to have at least one div to make it work -->
</body></html>
這就像一個人的舌頭上一陣涼爽的雨水。在沙漠中。 –
付諸腳本:
if($_POST['id']) {
$data = array('return'=>'returnValue');
$data = json_encode($data);
exit($data); }
的Javascript:
$.ajax({
url: 'frmSelf.php',
data: $("#frmSelf").serialize(),
dataType: 'json',
type : 'post',
success : function(returnData) {
console.log(returnData);
}
});
我個人更喜歡總是使用單獨的腳本使用Ajax –
如果你想使用相同的PHP,你可以使用if/else來顯示/隱藏剩餘的html。 – benck