嗨,我是 JSON 和 Ajax 的新手,我的问题可能很愚蠢,但在学习时,愚蠢的问题也是基础。
我需要通过 Ajax 传递两个参数(giorno 和 periodo),
例如 'giorno' = 2017-05-10 和 'periodo' = 2:
$.ajax({
type:'POST',
data: JSON.stringify({
giorno: $('#dataselezionata').val(),
periodo: $('input:radio[name=periodo]:checked').val()
}),
contentType: "application/json; charset=utf-8",
dataType : 'json',
url:'http://www.rinnovipatenti.com/index2.php?a=prenotazione'
});
JSON 对象完美通过,Firebug 控制台中的结果是:
{"giorno":"2017-05-10","periodo":"2"}
如果我尝试像这样手动复制并粘贴对象到 php 页面:
<?
$json = '{"giorno":"2017-05-10","periodo":"2"}'; //pasted manually
$json = json_decode($json, TRUE);
$giorno = $json['giorno'];
$periodo = $json['periodo'];
echo"$giorno"; //2017-05-10
echo"$periodo"; //2
?>
这两个 echo 向我显示了值。好的!
我的问题从这里开始到这里结束。我无法携带要解码的 JSON 对象。
我很确定这是一个愚蠢的解决方案,但我不知道该怎么做。
我需要创建一个包装 Ajax 调用的函数,然后在 json_decode 中调用该函数??
附言 我还尝试简单地使用“$_POST['giorno']”等获取值。而不是使用 JSON 但没有成功。
有人可以帮帮我吗?感谢您的耐心等待。
2017 年 10 月 5 日更新
您好,我听从了您的建议,所以我又尝试了一次来简化代码,如下所示:
$('input:radio[name=periodo]').change(function() {
var giorno = document.getElementById("dataselezionata").value; // from datepicker
var periodo = $('input:radio[name=periodo]:checked').val(); // from radio button
var post_data = ("giorno="+giorno+"&periodo="+periodo);
$.ajax({
type:'GET',
data: post_data,
url:"http://www.rinnovipatenti.com/prenota/prenotazione.php",
});
if (this.value == '1') {
$('#orario').show();
$('#orari-mattina').show();
$('#orari-pomeriggio').hide();
}
else if (this.value == '2') {
$('#orario').show();
$('#orari-pomeriggio').show();
$('#orari-mattina').hide();
}
使用 GET 方法而不是 POST 方法,在 PHP 页面 prenotazione.php 中,现在的代码是:
<?
$giorno = $_GET['giorno'];
$periodo = $_GET['periodo'];
echo"$giorno";
echo"$periodo";
?>
在 Firebug 控制台中参数正常
giorno 2017-05-10
periodo 2
格式化的链接是:
http://www.rinnovipatenti.com/prenota/prenotazione.php?giorno=2017-05-10&periodo=2
html 控制台预览工作正常但页面不工作。 我在 Angular 落里! 很奇怪。我只有一个疑问:我可以通过GET/POST方式将数据发送到收集数据的同一个页面吗? 换句话说,页面 foo.php 可以像循环一样向 foo.php 发送数据而不刷新吗? ajax 调用可以包装在 .change 函数内还是必须在外部?
最佳答案
$.post( "http://www.rinnovipatenti.com/index2.php?a=prenotazione", {
giorno: $('#dataselezionata').val(),
periodo: $('input:radio[name=periodo]:checked').val()
} );
你不需要对你的 JSON 进行字符串化
在 PHP 方面,您只需使用
$giorno = $_POST['giorno'];
$periodo = $_POST['periodo'];
获取值
您可以使用以下功能。你已经有了。它对我来说很好。
$('input:radio[name=periodo]').change(function() {
var giorno = '2017-05-15';
var periodo = '2';
$.post( 'http://www.rinnovipatenti.com/index2.php?a=prenotazione', {
giorno: giorno,
periodo: periodo
});
/*....*/
});
关于javascript - 如何动态地将 json 对象值传递给 php?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43868364/