将Jquery变量传递给php时出现问题。
当我将变量id传递给B.php
时,我收到此错误
"Notice: Undefined index: id1 in C:\xampp \htdocs\PhpProject1\OtherUsableItems\B.php on line 2
如何解决这个问题????这A.php
<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
var id = 23;
$("#submit").click(function(){
$.post("B.php",
{
id1: id,
} );
});
});
</script>
</head>
<body>
<form action="B.php" method="post" >
<input type="submit" id="submit" name="submit"/>
</form>
</body>
</html>
这B.php
<?php
$a =$_POST['id1'];
echo $a ;
?>
我希望将id变量传递给B.php
答案 0 :(得分:4)
试试这个:
<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
var id = 23;
$("#submit").click(function(){
$.ajax(
{
url: "B.php",
type: "POST",
data: { id1: id},
success: function (result) {
alert('success');
}
});
});
});
</script>
</head>
<body>
<form >
<input type="button" id="submit" name="submit"/>
</form>
</body>
</html>
然后B.php
<?php
$a =isset($_POST['id1'])?$_POST['id1']:'not yet';
echo $a ;
?>
答案 1 :(得分:1)
尝试将输入类型更改为按钮而不是提交
<input type="button" id="submit" name="submit"/>
答案 2 :(得分:1)
问题是您的表单已提交,$.post
用于提交ajax。为此,您需要阻止表单提交。
<script>
$(document).ready(function(){
var id = 23;
$("#submit").click(function(){
$.post("B.php",
{
id1: id,
});
event.preventDefault() ;
});
});
</script>
在按钮点击功能中添加event.preventDefault();
答案 3 :(得分:0)
$(document).ready(function(){
var id = 23;
$("#submit").click(function(e){
$.post("B.php", {id1: id} );
e.preventDefault();
});
});
尝试上面的代码。第一:
JS不允许这样做:{id1: id,}
(最后请参见逗号)。这是PHP的一个特性。实际上,你的JS代码根本不应该被执行,因为这是一个语法错误(假设你会在浏览器的控制台中找到它)
另一个问题:您必须阻止默认提交表单。这需要e.preventDefault()
。如果没有它,将启动ajax帖子,而不是通常的表单提交。并且您的表单没有名称为id1的元素,假设第二个请求产生该错误消息。
修改强> 这是使用常规提交发布值,因此浏览器会重定向到B.php
$(document).ready(function(){
var id = 23;
$("#submit").click(function(){
$(this).closest("form")
.append($("<input>", {"type":"hidden", "name":"id1", "value":id}));
});
});
答案 4 :(得分:0)
试试这个:
<script>
$(document).ready(function(){
var id = 23;
$("#submit").click(function(e){
e.preventDefault();
$.post("B.php", {id1: id}, function(data){ //<---get the data from B.php
console.log(data); //<--------show it here
alert(data);
});
});
});
</script>
由于您使用的是ajax功能,因此您必须停止表单提交功能。这里有一个尾随逗号{id1 : id,}
这是IE浏览器中的一个问题,但最新的其他浏览器才能正常工作。
您发布了此错误:
"Notice: Undefined index: id1 in C:\xampp \htdocs......
不要在文件系统中运行页面$.post()
不会以这种方式运行。
而是尝试使用http://localhost/yourapplication/page.php
答案 5 :(得分:0)
使用隐藏字段设置要发送的值。由于您使用的是提交,因此您的整个表单都已提交。隐藏字段也会发送,可以使用隐藏字段的名称直接访问。
答案 6 :(得分:0)
php抛出了E_NOTICE,因为POST-Array的索引不存在。您可以切换通知的error_reporting,请参阅http://www.php.net/manual/de/errorfunc.configuration.php#ini.error-reporting或检查索引是否存在:
if( isset($_POST['id1']) ) {
// do something
}
答案 7 :(得分:0)
试试这段代码,
<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
var id = 23;
$("#submit").click(function(){
$('#id1').val(id);
});
});
</script>
</head>
<body>
<form action="B.php" method="post" >
<input type="submit" id="submit" name="submit"/>
<input type="hidden" name="id1" id="id1" value=""/>
</form>
</body>
</html>
在这里你可以将'id'的值传递给B.php,并且将作为$ _POST ['id1']
进行访问答案 8 :(得分:0)
或者你可以这样使用submit()
$(function(){
var id = 23;
$("#myform").submit(function() {
$.post("B.php", { id1: id }).done(function(data) {
alert( data );
});
return false; //true(post form data)
});
});
并形成
<form id="myform" method="post">
<input type="submit" id="submit" name="submit" />
</form>
编辑:哦,是的B.php isset check或error_reporting(0);
if(isset($_POST['id1'])){
print_r( $_POST );
}