javascript - 如何动态地将 json 对象值传递给 php?

标签 javascript php jquery json ajax

嗨,我是 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/

相关文章:

javascript - 冗余让微软和谷歌托管 jQuery

php - MYSQL SELECT 语句用于选择日期期间

jquery - 根据子元素的变化增加或减少父 div 高度

javascript - 想要内联列表左右消失

javascript - Firebase - 检查使用 Google 帐户创建的用户是否正在注册或登录?

javascript - 如何通过 Javascript 使用数组值更改 div 文本?

php - 错误的 DNS 设置,php_network_getaddresses : getaddrinfo failed Name or service not known, nslookup

php - 函数内有两个 WHILE - 没有执行一个

jQuery.submit 从 3.3 开始已被弃用,替代方案是什么?

Rails Controller 返回 200 OK 时未触发 jquery ajax 成功回调