我第一次使用AJAX,所以我写了一个代码,并遵循了一个教程,但当我试图用AJAX发送我的帖子时,我得到了未定义的索引,我真的不知道为什么,我试图搜索答案,但由于我是第一次使用AJAX和javascript,那里的代码没有告诉我任何信息。这是我的代码,如果有任何帮助,我将不胜感激。
js方法
function post() {
var name = $('meno').val();
var priez = $('priezvisko').val();
$.post( "aktualizuj.php", {
'meno': name,
'priezvisko': priez
},
function (data) {
$('#result').html(data);
}
);
}
html表单…
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript" src="prihlasenie.js"></script>
</head>
<body>
<form>
<label for="meno" >Meno:</label><input type ="text" name="meno" id="meno" value ="meno" ><br>
<label for="priezvisko" >Priezvisko:</label><input type ="text" id="priezvisko" name="priezvisko" value ="priezvisko" ><br>
<input type="button" value="ulozZmeny" onclick="post()" >
</form>
<div id="result"></div>
</body>
</html>
这是我应该从ajax/javascript 获得的
session_start();
require "pripojenie.php";
$meno = $_POST['meno'];
$priezvisko = $_POST["priezvisko"];
$login = $_SESSION['login'];
jquery不序列化值未定义的键:值对,即
$.post(url, { foo:undefined });
导致jquery不发送任何POST参数。
问题是由于以下线路,
var name = $('meno').val();
var priez = $('priezvisko').val();
这将查找元素meno
和元件priezvisko
(然后是它们的值),就好像您有一个类似的文档一样
<p>
<meno>...</meno>
<priezvisko>...</priezvisko>
</p>
但是,您正在寻找以meno
/priezvisko
作为其id属性值的元素:
var name = $('#meno').val();
var priez = $('#priezvisko').val();
不过,您应该检查php脚本中是否存在参数。没有什么可以阻止另一个脚本/bot/用户使用不同的参数或根本没有参数调用您的脚本
另请参阅:
- http://docs.php.net/isset
- http://docs.php.net/filter