Jquery 在php文件中解码从ajax接收的json

Jquery 在php文件中解码从ajax接收的json,jquery,Jquery,我通过ajax调用将json对象传递给我的php文件 <?php if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' )) { $mt = $_POST['tmt']; if($mt!=NULL){ $res11['result']=TRUE; }else{

我通过ajax调用将json对象传递给我的php文件

<?php
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' )) {
    $mt = $_POST['tmt'];
    if($mt!=NULL){
            $res11['result']=TRUE;
        }else{
            $res11['result']=FALSE;
        }
        echo json_encode($res11);
}
?>
jQuery语法

$.getJSON('http:..Sample/JsonCreation.php', function(data)
{
   //data has the json - I am trying to edit this json and then pass it to another php file through ajax and save in DB. I have successfully edited but unable to access the passed json in my php file.
   questionsArray = data;
}
$('form').on('submit', function(event)
{
//AJAX CALL
                $.ajax
                ({
                    url: "updateTestReport.php",
                    type: "post",
                    //JSON.stringify
                    data: {json:(questionsArray)},
                    contenttype: "application/json; charset=utf-8",
                    datatype: "text",

                    success: function(data)
                    {
                        //alert("success");
                        alert(data);
                    },
                    error:function()
                    {
                        alert("failure");
                    }
                });
});
PHP文件

<?php

//$contentjson = file_get_contents("php://input");
//echo $_POST['json'];
$questionsArray = json_encode($_POST['json']);
echo $questionsArray;


?>
1) php文件中的json_编码是如何给出输出的。我不应该使用json_解码吗? 2) 即使通过编码的json,我也无法检索值。请让我知道如何访问此json中的值。。。 3) 文件_get_contents和$_POST['json']之间有什么区别

编辑: //开始

我需要访问php文件中的json,检索一些值,进行一些计算,保存在DB中。然后返回到主html文件

//结束
请给出明确的解释…

如果您通过警报直接打印值,它将显示
[Object]
,因为响应是JSON格式的。尝试
警报(res[0].questionNumber)
,这将显示第一个questionNumber

尝试这样的方法来访问这些值

success: function(res)
{
 for(var i=0;i<res.length;i++)
 {
    qno = res[i].questionNumber;
    desc = res[i].quesDesc;
    // and so on
    // do whatever you want this data
 }
},
成功:功能(res)
{

对于(var i=0;i您希望转换或获取用php编码的数组

<script>
            $.ajax
                    ({
                        url: "updateTestReport.php",
                        type: "post",
                        //JSON.stringify
                        data: {json: (questionsArray)},
                        contenttype: "application/json; charset=utf-8",
                        datatype: "text",
                        success: function(data)
                        {
                            /*
                             * Below this comment you can also use 
                             * data = jQuery.parseJSON(data);
                             * It will decode json encoded
                             */
                            data = jQuery.parseJSON(data);
                            alert(data.questionNumber);
                            alert(data.quesDesc);
                            /*
                             * put the array keys using the period in between with data variable
                             * 
                             */
                            alert(data);
                        },
                        error: function()
                        {
                            alert("failure");
                        }
                    });
        </script>

$.ajax
({
url:“updateTestReport.php”,
类型:“post”,
//JSON.stringify
数据:{json:(questionsArray)},
contenttype:“应用程序/json;字符集=utf-8”,
数据类型:“文本”,
成功:功能(数据)
{
/*
*在此评论下方,您也可以使用
*data=jQuery.parseJSON(数据);
*它将解码json编码
*/
data=jQuery.parseJSON(数据);
警报(数据、问题编号);
警报(data.quesDesc);
/*
*使用带数据变量的句点放置数组键
* 
*/
警报(数据);
},
错误:函数()
{
警报(“故障”);
}
});

如果您有任何疑问,请告诉我。

就像我给您举了一个提交ajax的示例一样。 表单#数据->#数据是表单的id

<script>
    $("form#data").submit(function() {
        if($("form#data").validationEngine('validate') != true){
         return false;
         }
        var formData = new FormData($(this)[0]);

        $.ajax({
            url: '/test/test.php',
            type: 'POST',
            data: formData,
            async: false,
            success: function(data) {
                data = jQuery.parseJSON(data);
                if (data.result == true) {
                    alert('Your details updated successfully.');
                }
                else if (data.result == false) {
                    alert("Your details not updated!");
                }
            },
            cache: false,
            contentType: false,
            processData: false
        });

        return false;
    });
</script>

$(“表单数据”).submit(函数(){
if($(“表单数据”).validationEngine('validate')!=true){
返回false;
}
var formData=新formData($(此)[0]);
$.ajax({
url:“/test/test.php”,
键入:“POST”,
数据:formData,
async:false,
成功:功能(数据){
data=jQuery.parseJSON(数据);
如果(data.result==true){
警报(“您的详细信息已成功更新”);
}
else if(data.result==false){
警告(“您的详细信息未更新!”);
}
},
cache:false,
contentType:false,
processData:false
});
返回false;
});
现在,我向您展示在ajax调用中请求的test.php

<?php
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ( $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' )) {
    $mt = $_POST['tmt'];
    if($mt!=NULL){
            $res11['result']=TRUE;
        }else{
            $res11['result']=FALSE;
        }
        echo json_encode($res11);
}
?>


这是通过ajax post获取数据的php文件。如果您有任何疑问或其他疑问,可以询问。

如果我没有清楚地放置我的疑问,很抱歉。我需要访问php文件中的json…我在php中回显只是为了检查输出…@vivin您可以使用json_解码($\u post['json'))对于您的php,可以使用arrayI尝试了@Avi。但是在我的警报中,它给出了一条包含html内容的巨大消息-
@vivin这是一种错误。请告诉我警报中的确切消息。我发现了警告消息…json_decode()期望参数1是字符串,数组在…中给出。我试图使用JSON.stringify。但即使提交按钮的preventDefault()操作也没有执行。为什么会这样?以及