json перевести в php - PullRequest
       1

json перевести в php

5 голосов
/ 14 февраля 2011

Я хочу передать значения ключа на страницу 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;
?>

Ответы [ 5 ]

21 голосов
/ 25 апреля 2013

Если вы не используете dataType: 'json', вам может потребоваться сделать полоски

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

И в php:

$posts = json_decode(stripslashes($_POST['posts']));
6 голосов
/ 13 марта 2013

Это помогло мне:

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

в вашем php-коде для доступа к записи

Надеюсь, это кому-нибудь поможет!

5 голосов
/ 14 февраля 2011

Я собираюсь сделать предположение и сказать, что вы НЕ ДОЛЖНЫ что-либо указывать.Я верю, что JQuery сделает это за вас.А именно, нет человека = JSON.stringify (персона).Дайте этому попытку.

3 голосов
/ 24 октября 2012

Вот как должен выглядеть ваш $.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();
}
0 голосов
/ 14 февраля 2011

Я не работал с PHP, но из моего опыта с ASP.net вам могут помочь следующие.

Добавить contentType ключ к установкам ajax:

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,
......
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...