json stringify到php

时间:2011-02-14 05:41:25

标签: php jquery json

我想将键值传递给php页面。

在php页面,我将通过匹配ajaxcallid开始读取值。

但它不起作用。

我要传递的语法/方式导致错误。

parse error
invalid json: ajax call id is missing    

的JavaScript / AJAX:

var person = { 
     "Address"    :   "123 Anywhere St.", 
     "City"       :   "Springfield", 
     "PostalCode" :   99999
};

alert(person);          

person= JSON.stringify(person);

alert(person);

$.ajax({
    url: 'ROOT_URL/admin/ajaxtest.php',
    type: "POST",
    dataType: 'json',
    data: {ajaxcallid: '26', jsarr: person},
    timeout: 5000,
    success:  function(output) {
        alert(output.Address);
    },
});

PHP:

<?php
if (isset($_REQUEST['ajaxcallid']))
{    
    if($_REQUEST['ajaxcallid']==26)
    {    
        //example, I want to read value of person.Address, person.City, 
        //person.PostalCode
    //what is the easiest way
        $phparr= json_decode($_REQUEST['jsarr']);
        //do all other operation
        $output= json_encode($phparr);
    }
}
else
{
    $output= "ajax call id is missing";
}
echo $output;
?>

6 个答案:

答案 0 :(得分:19)

如果你没有使用dataType:'json',你可能需要做striplashes

$.post(window.data.baseUrl, {posts : JSON.stringify(posts)});

在php中:

$posts = json_decode(stripslashes($_POST['posts']));

答案 1 :(得分:6)

这对我有所帮助:

 data = json_decode($this->request->data['jsarr'], true);

在您的PHP代码中访问记录

希望它会帮助别人!

答案 2 :(得分:5)

我会猜测并说你不应该串通任何东西。我相信JQuery会为你做到这一点。即,没有人= JSON.stringify(人)。试一试。

答案 3 :(得分:3)

这是您的$.ajax电话和PHP方应该是这样的:

<强> JQuery的

$.ajax({
    url: "/admin/ajaxtest.php",
    method: "POST",
    data: {
        ajaxcallid: "26",
        person: JSON.stringify({
            "Address" : "123 Anywhere St.",
            "City" : "Springfield",
            "PostalCode" : "99999"
        })
    }
}).done(function(data) {
    if (!data) {
        // generic error message here
    } else if (data == 'invalid') {
        alert('no ajaxcallid received');
    } else {
        var result = $.parseJSON(data); // if you pass back the object
        alert(result.Address);
    }
});

<强> PHP

if (isset($_REQUEST['ajaxcallid'])) {
    if ((int) $_REQUEST['ajaxcallid'] == 26) {
        $personData = json_decode($_REQUEST['person']);
        $address = $personData->Address;
        $postalCode = $personData->PostalCode;
        $returnData = json_encode($personData);
        echo $personData;
        die();
    }
} else {
    echo 'invalid';
    die();
}

答案 4 :(得分:1)

$data_array = json_decode($json_string);

如果要将对象转换为关联数组,请在函数中添加true:

$data_array = json_decode($json_string, true);

答案 5 :(得分:0)

我没有与PHP合作过,但根据我对ASP.net的经验,以下内容可能对您有所帮助。

contentType键添加到ajax settigns:

type: "POST",
contentType:'application/json',
dataType: 'json',

另外我认为您需要stringify data分配给var person = { "Address" : "123 Anywhere St.", "City" : "Springfield", "PostalCode" : 99999 }; var d= {ajaxcallid: '26', jsarr: person}; var dat=JSON.stringify(d); ...... data: dat, ...... 这样的全部价值:

{{1}}