[英]AJAX call to a PHP file not working
我正在練習對本地主機執行簡單的AJAX調用,但是遇到了麻煩。 我想做的是將兩個文本框表單值發送到PHP,然后在通過AJAX成功接收后讓它在我的表單中將消息返回到空div。 我的test.php是這樣的:
<?php
$num = htmlentities(substr($_POST["num"], 0, 7), ENT_QUOTES);
$name = htmlentities(substr($_POST["name"], 0, 50), ENT_QUOTES);
$result = "'$num ' + 'and' + ' $name' + ' values have been successfully AJAXd'";
echo json_encode($result);
jQuery的:
$("#form").submit(function() {
event.preventDefault();
$("#msgcontainer").html("");
$.ajax({
url: "test.php",
data: ("#num").serialize(), ("#name").serialize(),
contentType: "application/json; charset=utf-8",
type: "POST",
dataType: "json"
success: function(response) {
$("#msgcontainer").html(response);
}
});
}
當我嘗試提交時,頁面只是重新加載並將表單值添加到URL。 我已經嘗試解決這一問題了大約一天,因此我們將不勝感激。
編輯:
我通過嘗試每個響應中的內容來弄清楚。 不知道為什么不序列化就可以工作...如果有人知道,請解釋。 有效的jQuery代碼:
$("#form").submit(function(event) {
event.preventDefault();
$("#msgcontainer").html("");
$.ajax({
url: "test.php",
data: {
num: $("#num").val(),
name: $("#name").val()
},
type: "POST",
dataType: "json",
success: function(response) {
$("#msgcontainer").html(response);
}
});
});
感謝您的幫助!
立即有兩件事脫穎而出:
data: ("#num").serialize(), ("#name").serialize(),
contentType: "application/json; charset=utf-8",
第一個應該是這樣(假設您有兩個文本框):
data: {
num: $('#num').val(),
name: $('#name').val()
},
而且contentType:
行不應存在,否則您將有一個空的$_POST
。
最后, event
應該是一個函數參數,即:
$("#form").submit(function(event) {
event.preventDefault();
// ...
您的AJAX調用中的數據參數有誤,應為:
data: { num: $('#num').val() , name: $('#name').val() }
$("#form").submit(function() {
event.preventDefault();
event
未在任何地方定義。 我猜你的意思是...submit(function(event) {
。
您應該在JavaScript控制台中看到一個錯誤,告訴您“未定義事件”或“ TypeError:無法讀取未定義的屬性'preventDefault'”。
數據發送不正確。 考慮更換:
data: ("#num").serialize(), ("#name").serialize(),
帶有:
data: $(this).serialize(),
然后,您可能需要編輯PHP
腳本,以便將字符串concatenate
而不是summing
。
還可以傳遞event
參數或直接使用以下內容:
$("#form").submit(function() {
var event = arguments[0];
event.preventDefault();
....
});
我懷疑您是否需要contentType: "application/json; charset=utf-8",
早上好,
您必須序列化整個表格,例如:
$("#yourform").serialize();
而不只是逐個字段:
("#num").serialize(), ("#name").serialize()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.