【问题标题】:How can a javascript object be passed to PHP and values accessed如何将 javascript 对象传递给 PHP 并访问值
【发布时间】:2012-10-02 19:07:55
【问题描述】:

我需要将 javascript 对象传递给 PHP,然后将其解码为关联数组。我在这个网站上阅读了许多类似的问题,现在用谷歌搜索了几个小时。我的问题是我找不到涵盖双方(javascript 和 PHP)的简单示例。这是我尝试做的简化版本。将数据作为键/值对发布是我可以让任何东西通过的唯一方法。 HTML 中有一个 DIV 用于显示答案。我要做的就是确认数据在这段代码中过去了。

我得到的只是“POST 数组已加载”,这对我来说表明 POST 数组包含数据,但我要么解码错误,要么错误地访问关联数组。我还阅读了 JQUERY 站点上的 AJAX 和 POST 页面,但这些示例并没有让我到达我需要的地方。如果我为 strob 分配一个简单的字符串值,它就会完美传递。

        $(document).ready(function(){
            var obj={};
            obj.value1="foo";
            obj.value2="bar";
            var strob=JSON.stringify(obj);
            $.post("byterecord.php",{sendToValue: strob},
            function(data){
                $('#display').html(data.returnFromValue);
            }, 
            "json");
        });

字节记录.php

<?php
if (isset($_POST['sendToValue'])){

$aarray=json_decode($_POST['sendToValue'],true);
$strval=$aarray[value1];

}else{
$strval = "nothing.";
}

echo json_encode(array("returnFromValue"=>"POST array is loaded with " .$strval));  

?>

【问题讨论】:

    标签: php jquery object post json


    【解决方案1】:

    直接传递对象即可:

    $.post("byterecord.php", obj, function() {});
    

    然后在php中,你可以通过:

    $value1 = $_POST['value1'];
    $value2 = $_POST['value2'];
    

    【讨论】:

    • 不,我的大脑或网站一定有什么根本性的问题。现在我什么都没通过。以下是 URL:learningbyte.comze.com/indexexample.html 和 byterecord.php
    • 您的代码中有语法错误。在第 29 行,在 } 之后有一个额外的 ','。放一个;而是
    • 很好,但仍然没有功能。我真的很感谢它让我发疯的帮助。我不介意从头开始使用将任何对象从 JQuery 传递到 PHP 的新代码,然后发回一些通知数据已成功。
    【解决方案2】:

    您的代码运行良好:

    但是,从控制台检查您的请求时,会生成 PHP 通知:

      Notice: Use of undefined constant value1 - assumed 'value1' 
    

    要么从

    更改参数
     $aarray[value1];
    

     $aarray['value1'];
    

    或者,尝试关闭 error_reporting :

     error_reporting(0);
    

    【讨论】:

    • 我总是对聪明人愿意帮助像我这样的新手印象深刻。在这方面,我不得不承认我仍然没有让这个工作。我重新编写了这两个文件,使它们看起来像上面的代码,除了我现在按照上面的建议引用 $aarray['value1'] 。当我在 chrome 中使用 firebug 时,一切似乎都是正确的(除了我不明白:sendToValue=%7B%22value1%22%3A%22foo%22%2C%22value2%22%3A%22bar%22%7D)对我来说这意味着$_POST 数组中有一些值对应于 sendToValue 但我用来访问“value1”值的代码不正确。
    • 我不知道为什么,但是这里建议的带斜杠stackoverflow.com/a/2197308/1024783 解决了这个问题。谢谢巴勃罗!
    猜你喜欢
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多