JQuery/PHP - Ajax 请求,JSON 响应
JQuery/PHP - Ajax Request, JSON response
我正在尝试做一个简单的练习:
在两个输入中写一个数字,按下按钮,结果是第三个输入。
sum.html:
<html>
<head>
<title>Sum</title>
<meta charset="UTF-8">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="sum.js"></script>
</head>
<body>
<form>
<input name="a"/>+<input name="b"/>=<input name="c"/>
<button id="somar"/>SUM</button>
</form>
</body>
</html>
sum.php:
<?php
$a = 5; $b = 3;
function soma($a, $b = 2){
global $a;
return $a + $b;
}
echo json_encode(array("result" => soma($_GET['a'], $_GET['b'])));
?>
sum.js
$(document).ready(action);
function action(){
$("#somar").click(sum);
}
function sum(){
var a = $("input[name='a']").val();
var b = $("input[name='b']").val();
$.ajax({
type: "get",
dataType : "json",
url: "sum.php",
data: {"a": a, "b": b}
}).done(function(data) {
$("input[name='c']").val(data.result);
//alert(0);
}).fail(function() {
alert(1);
});
}
我第一次点击按钮时似乎没有任何反应,其他时候都失败了。
使用 EasyPHP,我必须关闭页面并再次打开它才能获得相同的结果。
部分练习是用 php 函数中间的全局变量预测结果。我只是来写剧本的
此代码存在一些问题,会阻止其按预期工作。
$a = 5; $b = 3;
应该是这样的:
$a = isset($_POST['a']) ? $_POST['a'] : 0;
$b = isset($_POST['b']) ? $_POST['b'] : 0;
您的 PHP 代码未使用从 ajax 请求发布的值。你不需要全局变量
编辑:这是我完成的一些代码,功能正常但不包含全局变量,您可以自己添加。
// test.php
<?php
function sum($a, $b) {
return $a + $b;
}
$a = isset($_POST['a']) ? $_POST['a'] : 0;
$b = isset($_POST['b']) ? $_POST['b'] : 0;
echo json_encode(array('result' => sum($a, $b)));
?>
// test.html
<html>
<head>
<title>Sum</title>
<meta charset="UTF-8">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
<form action="#" method="post">
<input name="a"/>+<input name="b"/>=<input name="c"/>
<button id="somar"/>SUM</button>
<script type="text/javascript">
$(document).ready(function() {
function sum(){
var a = $("input[name='a']").val();
var b = $("input[name='b']").val();
$.ajax({
type: "POST",
dataType : "json",
url: "test.php",
data: {"a": a, "b": b}
}).done(function(data) {
$("input[name='c']").val(data.result);
//alert(0);
}).fail(function() {
alert(1);
});
}
$("#somar").on('click', function(event) {
event.preventDefault();
sum();
});
});
</script>
</form>
</body>
</html>
您只想根据用户输入添加,然后才将值传递给 sum.php
中的变量
我做了一些修改,你觉得合适吗,看我修改的代码
html
中的输入类型发生变化
<input type="button" id="somar" value="SUM"/>
更改您的 php 文件
<?php
//$a = 5; $b = 3;
function soma($a, $b ){
$a= $_GET['a'];
$b= $_GET['b'];
return $a + $b;
}
//echo json_encode(array("result" => soma($_GET['a'], $_GET['b'])));
?>
你的js文件没有变化
当您点击提交按钮时,您正在重新加载页面并将其重置为触发点击事件之前的状态。
您的 sum
函数需要捕获事件对象并防止默认行为。
function sum(event){
event.preventDefault();
Tru like this
in sum.html
<html>
<head>
<title>Sum</title>
<meta charset="UTF-8">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="sum.js"></script>
</head>
<body>
<form>
<input name="a"/>+<input name="b"/>=<input name="c"/>
<button id="somar"/>SUM</button>
</form>
</body>
</html>
sum.js
<script type="text/javascript">
$(document).ready(function(){
$("#somar").click(function() {
var a = $("input[name='a']").val();
var b = $("input[name='b']").val();
//alert(a);
//alert(b);
$.ajax({
type: 'POST',
url: 'sum.php',
data: {"a": a, "b": b},
success: function(data) {
$("input[name='c']").val(data);
//$(".total").prev('input').val("hello world");
}
});
});
});
</script>
在 sum.php
<?php
if (isset($_POST['a']) && isset($_POST['b'])){
$a = $_POST['a'];
$b = $_POST['b'];
echo $c= $a+$b;
}
我正在尝试做一个简单的练习:
在两个输入中写一个数字,按下按钮,结果是第三个输入。
sum.html:
<html>
<head>
<title>Sum</title>
<meta charset="UTF-8">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="sum.js"></script>
</head>
<body>
<form>
<input name="a"/>+<input name="b"/>=<input name="c"/>
<button id="somar"/>SUM</button>
</form>
</body>
</html>
sum.php:
<?php
$a = 5; $b = 3;
function soma($a, $b = 2){
global $a;
return $a + $b;
}
echo json_encode(array("result" => soma($_GET['a'], $_GET['b'])));
?>
sum.js
$(document).ready(action);
function action(){
$("#somar").click(sum);
}
function sum(){
var a = $("input[name='a']").val();
var b = $("input[name='b']").val();
$.ajax({
type: "get",
dataType : "json",
url: "sum.php",
data: {"a": a, "b": b}
}).done(function(data) {
$("input[name='c']").val(data.result);
//alert(0);
}).fail(function() {
alert(1);
});
}
我第一次点击按钮时似乎没有任何反应,其他时候都失败了。 使用 EasyPHP,我必须关闭页面并再次打开它才能获得相同的结果。
部分练习是用 php 函数中间的全局变量预测结果。我只是来写剧本的
此代码存在一些问题,会阻止其按预期工作。
$a = 5; $b = 3;
应该是这样的:
$a = isset($_POST['a']) ? $_POST['a'] : 0;
$b = isset($_POST['b']) ? $_POST['b'] : 0;
您的 PHP 代码未使用从 ajax 请求发布的值。你不需要全局变量
编辑:这是我完成的一些代码,功能正常但不包含全局变量,您可以自己添加。
// test.php
<?php
function sum($a, $b) {
return $a + $b;
}
$a = isset($_POST['a']) ? $_POST['a'] : 0;
$b = isset($_POST['b']) ? $_POST['b'] : 0;
echo json_encode(array('result' => sum($a, $b)));
?>
// test.html
<html>
<head>
<title>Sum</title>
<meta charset="UTF-8">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
</head>
<body>
<form action="#" method="post">
<input name="a"/>+<input name="b"/>=<input name="c"/>
<button id="somar"/>SUM</button>
<script type="text/javascript">
$(document).ready(function() {
function sum(){
var a = $("input[name='a']").val();
var b = $("input[name='b']").val();
$.ajax({
type: "POST",
dataType : "json",
url: "test.php",
data: {"a": a, "b": b}
}).done(function(data) {
$("input[name='c']").val(data.result);
//alert(0);
}).fail(function() {
alert(1);
});
}
$("#somar").on('click', function(event) {
event.preventDefault();
sum();
});
});
</script>
</form>
</body>
</html>
您只想根据用户输入添加,然后才将值传递给 sum.php
中的变量我做了一些修改,你觉得合适吗,看我修改的代码
html
中的输入类型发生变化<input type="button" id="somar" value="SUM"/>
更改您的 php 文件
<?php
//$a = 5; $b = 3;
function soma($a, $b ){
$a= $_GET['a'];
$b= $_GET['b'];
return $a + $b;
}
//echo json_encode(array("result" => soma($_GET['a'], $_GET['b'])));
?>
你的js文件没有变化
当您点击提交按钮时,您正在重新加载页面并将其重置为触发点击事件之前的状态。
您的 sum
函数需要捕获事件对象并防止默认行为。
function sum(event){
event.preventDefault();
Tru like this in sum.html
<html>
<head>
<title>Sum</title>
<meta charset="UTF-8">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="sum.js"></script>
</head>
<body>
<form>
<input name="a"/>+<input name="b"/>=<input name="c"/>
<button id="somar"/>SUM</button>
</form>
</body>
</html>
sum.js
<script type="text/javascript">
$(document).ready(function(){
$("#somar").click(function() {
var a = $("input[name='a']").val();
var b = $("input[name='b']").val();
//alert(a);
//alert(b);
$.ajax({
type: 'POST',
url: 'sum.php',
data: {"a": a, "b": b},
success: function(data) {
$("input[name='c']").val(data);
//$(".total").prev('input').val("hello world");
}
});
});
});
</script>
在 sum.php
<?php
if (isset($_POST['a']) && isset($_POST['b'])){
$a = $_POST['a'];
$b = $_POST['b'];
echo $c= $a+$b;
}