Ian*_*ser 0 javascript php ajax jquery
我试图将一个变量从javascript发布到同一个php页面.这是代码:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
</head>
<body>
<?php echo 'Result is '; if (isset($_GET['testing'])) { echo $_GET['testing']; } ?>
<?php $thisPage = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; ?>
<script>
$(document).ready(function() {
$('#testing123').on('change',function () {
var testing = "confirmed";
$.ajax({
type: "GET",
url: "<?php echo $thisPage; ?>",
data: testing,
success: function() { $('#showresult').html("success"); }
})
});
});
</script>
<form>
<select id="testing123">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</form>
<div id="showresult"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用POST,但不会在php中使用.还尝试使用单独的php文件并使用include_once()仍然无法正常工作.
我错过了要加载的文件吗?
问题是您发送的字符串不是键值对.你可以发送一个字符串(也就是屏幕后面发生的事情),但它必须是一个有效的查询字符串,由正确编码的键值对组成.
发送一个对象并让jQuery处理编码更容易:
$('#testing123').on('change',function () {
var testing = "confirmed";
$.ajax({
type: "GET",
url: "<?php echo $thisPage; ?>",
data: testing,
success: function() { $('#showresult').html("success"); }
})
});
Run Code Online (Sandbox Code Playgroud)
会变成这样的:
$('#testing123').on('change',function () {
// send key - value pairs
var testing = {'testing': "confirmed"};
$.ajax({
type: "GET",
url: "<?php echo $thisPage; ?>",
data: testing,
success: function() { $('#showresult').html("success"); }
})
});
Run Code Online (Sandbox Code Playgroud)
编辑:要将PHP脚本的结果返回到页面上,您需要使用传递给success
函数的变量:
...
success: function(output_from_php_script) {
$('#showresult').text(output_from_php_script);
}
Run Code Online (Sandbox Code Playgroud)
另请注意,发布到在ajax调用中生成页面的原始页面不是很方便:它将返回您不需要的html(整个页面...).
你最好编写一个单独的脚本来处理你的ajax调用,然后只返回echo
你需要的东西.
归档时间: |
|
查看次数: |
104 次 |
最近记录: |