[英]Jquery/js, taking a value from textfield and using ajax to send it to the server
[英]Trying to send a value from JS to PHP - JQuery's $.ajax() method is not working
我想在提交PHP表單時執行JS函數,並且從該函數中,我想將一個值(基於用戶的輸入)返回給PHP,我想在其中回應它。
這是一個SSCCE。 在實際代碼中,不僅僅是回顯值,而且值是JSON對象。
以下是我的代碼。 問題是$.ajax();
部分不起作用。 alert(name);
后瀏覽器中沒有任何操作alert(name);
。 為什么這不正常? 我怎樣才能解決這個問題?
來自index.php:
<form id="form">
Name:
<input id="name" type="text" />
<input type="Submit" value="Go" />
</form>
來自scripts.js:
$(document).ready(function() {
$("#form").submit(function(event) {
event.preventDefault();
var name = $("#name").val();
alert(name);
$.ajax({
type:'POST',
url:'echo.php',
data: {
nameEntered : name
}
});
});
});
echo.php:
<?php
if ( isset($_POST["nameEntered"]) && !empty($_POST["nameEntered"]) ) {
echo $_POST["nameEntered"];
} else {
echo '$_POST["nameEntered"] is not set.';
}
?>
編輯:
安慰:
網絡:
編輯2:
在$.ajax()
添加了以下內容:
,
success: function(){
alert("success");
},
error : function(){
alert("error");
}
我得到一個警告說success
但瀏覽器從不指示echo.php = s
編輯3:
警報說success
,一個?
被添加到瀏覽器中的URL。 最初的URL是http://localhost/Test12/index.php
,它更改為http://localhost/Test12/index.php?
。
這種方式應該顯示響應。
JAVASCRIPT
$("#form").submit(function(event) {
event.preventDefault();
var name = $("#name").val();
//alert(name);
$.ajax({
type:'POST',
url:'http://localhost/Test12/echo.php',
data: {
nameEntered : name
},
success : function(data){
console.log(JSON.parse(data));
},
error : function(error){
console.log('erro', error);
}
});
});
PHP
<?php
if (isset($_POST["nameEntered"]) && !empty($_POST["nameEntered"])) {
$name = array("nome" => $_POST["nameEntered"]);
echo json_encode($name);
} else {
echo '$_POST["nameEntered"] is not set.';
}
?>
嘗試刪除document.ready()或代替.submit使用.on('submit',function(e){}); 或者添加絕對路徑'/page.php'
我認為除了顯示結果的成功調用之外,您還需要在提交函數中添加“event”作為參數
這給你帶來了什么:
$.ajax({
type:'POST',
url:'echo.php',
data: {
nameEntered : name
},
success: function(recd){ // <-------
alert(recd); // <-------
},
error : function(){
alert("error");
}
});
作為測試,將echo.php
替換為:
<?php
echo 'Incoming = ' .$_POST["nameEntered"]. "/r/n";
if (isset($_POST["nameEntered"]) && !empty($_POST["nameEntered"])) {
echo 'Here 01';
} else {
echo 'Here 02';
}
?>
您正在調用event.preventDefault(),但是您無法將事件添加到回調的參數中......因此您實際上並未停止提交表單。 這就是你在地址欄中看到問號的原因。
嘗試:
function(e){
e.preventDefault();
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.