我正在尝试使用AJAX和POST将jQuery代码中的变量传递给我的HTML / PHP代码,但是我收到错误消息“注意:未定义的索引:C:\ xampp \ htdocs \ teszt \ test1中的testData第9行的.php“。
我正在使用XAMPP,我在localhost中运行代码,我正在使用Mozilla Firefox,这是我的HTML / PHP代码(test1.php):
<!DOCTYPE html>
<html lang="hu">
<head>
<title>Test</title>
<meta http-equiv="Content-type" content="text/html;charset=utf-8">
</head>
<body>
<?php echo "<p class='testParagraph'>" . $_POST['testData'] . "</p>";?>
<script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
这是我的jQuery代码(script1.js):
$(document).ready(function() {
var temporaryVariable = "temporary variable";
$.ajax({
type: "POST",
url: "test1.php",
data: { testData:"2" },
success: function (result) {
alert('success');
}
}).done(function() {
$('.testParagraph').addClass( temporaryVariable );
});
});
到目前为止我尝试改变了什么(但当然没有奏效):
test1.php:
iso-8859-2
GET
代替POST
script
标记包含script1.js:
$(document).ready(function() {...
行data:
我尝试将引号符号从'
更改为"
或根本没有引号符号success: function...
行及其下面的两行此外,当我运行PHP代码时,p
标记从jQuery代码中获取temporaryVariable
类。
仍然,我收到上面写的错误消息。我很感激我得到的任何帮助。
答案 0 :(得分:0)
除非您从发布请求中获取php页面,否则使用$_POST['testData']
将无用,并且始终会给出索引未找到错误。如果您想在jquery的p
标记中设置值,可以使用$('.testParagraph').html( temporaryVariable )
代替.addClass
答案 1 :(得分:0)
使用数据:&#39; testData = 2&#39;,
而不是数据:{testData:&#34; 2&#34;},
答案 2 :(得分:0)
注意:未定义的索引:C:\ xampp \ htdocs \ teszt \ test1.php中的testData 第9行
表示你的
data: { testData:"2" },
错了。
没有测试,但这应该有效:
data: [ testData:"2" ],
因为$ _POST是一个数组
答案 3 :(得分:0)
将test1.php更改为:
<!DOCTYPE html>
<html lang="hu">
<head>
<title>Test</title>
<meta http-equiv="Content-type" content="text/html;charset=utf-8">
</head>
<body>
<p id='testParagraph'> </p> <!-- You receive the value by jquery not from PHP. -->
<script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
你的script1.js:
$(document).ready(function() {
var temporaryVariable = "temporary variable";
$.ajax({
type: "POST",
url: "test1.php",
data: { testData:"2" },
success: function (result) {
alert('success');
}
}).done(function() {
$('#testParagraph').html(temporaryVariable); //The value is inserted into the paragraph.
});
});
希望对你有用。
答案 4 :(得分:0)
这听起来好像是在向自己发布test1.php
,并且不清楚为什么要这样做。
正如@Rasclatt在评论中指出的那样,在您尝试访问之前检查数据是否存在。
变化:
<?php echo "<p class='testParagraph'>" . $_POST['testData'] . "</p>";?>
要:
<?php
if( isset( $_POST['testData'] ) ) {
echo "<p class='testParagraph'>" . $_POST['testData'] . "</p>";
}
?>
但是,如果test1.php
完全是不同的脚本,则进行以下更改:
在HTML中包含ajax内容的占位符:
<p class="tetParagraph"></p>
修剪并编辑您的JavaScript以下内容:
$(document).ready(function() {
var tempVal = "temporary variable";
$.ajax({
type: "POST",
url: "test1.php",
data: { testData:"2" },
success: function (result) {
tempVal = result;
$('.testParagraph').html( tempVal );
alert('success');
}
});
});