Javascript JSON-将代码从JQuery转换为PHP

Javascript JSON-将代码从JQuery转换为PHP,javascript,php,jquery,json,Javascript,Php,Jquery,Json,我正在尝试将一段代码从JQuery转换为PHP,以向远程服务器发送json POST请求 我的Jquery代码是: $( document ).ready(function() { $('#button').click( function() { $.ajax({ method: "POST", url: "http://http://www.fedex.com/trackingCal

我正在尝试将一段代码从JQuery转换为PHP,以向远程服务器发送json POST请求

我的Jquery代码是:

$( document ).ready(function() {
    $('#button').click(
        function() {
            $.ajax({
                method: "POST",
                url: "http://http://www.fedex.com/trackingCal/track",
                data: { 
                    action: "trackpackages", 
                    format: "json", 
                    locale: "it_IT", 
                    version: "1", 
                    data: '{"TrackPackagesRequest":{"appType":"WTRK","uniqueKey":"","processingParameters":{},"trackingInfoList":[{"trackNumberInfo":{"trackingNumber":"780909642310","trackingQualifier":"","trackingCarrier":""}}]}}'
                }
            })
            .done(function( msg ) {
                console.log( msg );
            });
        }
    )
});
我想从PHP做同样的POST请求调用,但我不能

我的PHP代码是:

$data = array("action" => "trackpackages", "data" => array ('TrackPackagesRequest' => array('appType' => 'WTRK', 'uniqueKey' => '', 'processingParameters' => '{}', 'trackingInfoList' => array(array('trackNumberInfo' => array('trackingNumber' => '780909642310', 'trackingQualifier' => '', 'trackingCarrier' => ''))))), 'format' => 'json', 'locale' => 'it_IT', 'version' => '1');


$data_string = json_encode($data);

$ch = curl_init('http://www.fedex.com/trackingCal/track');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
);


$result = curl_exec($ch);
echo $result;
远程服务器没有正确响应,似乎没有收到正确编码的数据。有人能帮我解决这个问题吗

谢谢大家!

这对我很有用:

<?php

    /* You need to define that parameter separately,
     * as it is supposed to be passed as a JSON String.
     */
    $data_field = array(
        'TrackPackagesRequest' => array(
            'appType' => 'WTRK',
            'uniqueKey' => '',
            'processingParameters' => (Object)array(), // Will be stringified as {}
            'trackingInfoList' => array(
                array(
                    'trackNumberInfo' => array(
                        'trackingNumber' => '780909642310',
                        'trackingQualifier' => '',
                        'trackingCarrier' => ''
                    )
                )
            )
        )
    );

    $data = array(
        "action" => "trackpackages",
        'format' => 'json',
        'locale' => 'it_IT',
        'version' => '1',
        "data" => json_encode($data_field) // Insert the String
    );

    $ch = curl_init('http://www.fedex.com/trackingCal/track');
    curl_setopt($ch, CURLOPT_POST, 1);
    // http_build_query will convert your parameters to param1=val1&param2=val2...
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $result = curl_exec($ch);
    echo $result;

?>

这对我很有用:

<?php

    /* You need to define that parameter separately,
     * as it is supposed to be passed as a JSON String.
     */
    $data_field = array(
        'TrackPackagesRequest' => array(
            'appType' => 'WTRK',
            'uniqueKey' => '',
            'processingParameters' => (Object)array(), // Will be stringified as {}
            'trackingInfoList' => array(
                array(
                    'trackNumberInfo' => array(
                        'trackingNumber' => '780909642310',
                        'trackingQualifier' => '',
                        'trackingCarrier' => ''
                    )
                )
            )
        )
    );

    $data = array(
        "action" => "trackpackages",
        'format' => 'json',
        'locale' => 'it_IT',
        'version' => '1',
        "data" => json_encode($data_field) // Insert the String
    );

    $ch = curl_init('http://www.fedex.com/trackingCal/track');
    curl_setopt($ch, CURLOPT_POST, 1);
    // http_build_query will convert your parameters to param1=val1&param2=val2...
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $result = curl_exec($ch);
    echo $result;

?>


在jQuery代码中,
data
中的
data
参数只是一个字符串(看起来像JSON),而在PHP代码中它是一个对象。也许试着调整一下。谢谢你的支持。我尝试了你的建议,但仍然不起作用。在jQuery代码中,
data
中的
data
参数只是一个字符串(看起来像JSON),而在PHP代码中它是一个对象。也许试着调整一下。谢谢你的支持。我试过你的建议,但还是不起作用。