إرجاع JSON من برنامج PHP Script




header (10)

أريد إرجاع JSON من برنامج PHP النصي.

هل أنا فقط صدى النتيجة؟ هل يجب علي تعيين رأس Content-Type ؟


إذا كنت بحاجة إلى الحصول على json من php لإرسال معلومات مخصصة ، يمكنك إضافة هذا header('Content-Type: application/json'); قبل طباعة أي شيء آخر ، إذن يمكنك طباعة echo '{"monto": "'.$monto[0]->valor.'","moneda":"'.$moneda[0]->nombre.'","simbolo":"'.$moneda[0]->simbolo.'"}'; custome echo '{"monto": "'.$monto[0]->valor.'","moneda":"'.$moneda[0]->nombre.'","simbolo":"'.$moneda[0]->simbolo.'"}';


إذا كنت تستعلم عن قاعدة بيانات وتحتاج إلى مجموعة النتائج بتنسيق JSON ، فيمكن إجراؤها على النحو التالي:

<?php

$db = mysqli_connect("localhost","root","","mylogs");
//MSG
$query = "SELECT * FROM logs LIMIT 20";
$result = mysqli_query($db, $query);
//Add all records to an array
$rows = array();
while($row = $result->fetch_array()){
    $rows[] = $row;
}
//Return result to jTable
$qryResult = array();
$qryResult['logs'] = $rows;
echo json_encode($qryResult);

mysqli_close($db);

?>

للحصول على مساعدة في تحليل النتيجة باستخدام jQuery ، ألق نظرة على هذا البرنامج التعليمي .


جرب json_encode لترميز البيانات وتعيين نوع المحتوى مع header('Content-type: application/json'); .


طريقة سهلة لتنسيق كائنات المجال الخاصة بك إلى JSON هي استخدام Serial Serializer . ثم مرر البيانات إلى json_encode وأرسل رأس Content-Type الصحيح لاحتياجاتك. إذا كنت تستخدم إطارًا مثل Symfony ، فلا يلزمك الاهتمام بتعيين الرؤوس يدويًا. هناك يمكنك استخدام JsonResponse .

على سبيل المثال ، سيكون نوع المحتوى الصحيح للتعامل مع Javascript هو application/javascript .

أو إذا كنت بحاجة إلى دعم بعض المتصفحات القديمة ، فإن الأكثر أمانًا هو text/javascript .

لجميع الأغراض الأخرى مثل application/json كنوع المحتوى.

هنا مثال صغير:

<?php
...
$userCollection = [$user1, $user2, $user3];

$data = Marshal::serializeCollectionCallable(function (User $user) {
    return [
        'username' => $user->getUsername(),
        'email'    => $user->getEmail(),
        'birthday' => $user->getBirthday()->format('Y-m-d'),
        'followers => count($user->getFollowers()),
    ];
}, $userCollection);

header('Content-Type: application/json');
echo json_encode($data);

قطعة كاملة من كود PHP الجميل والواضح الذي يعيد JSON هو:

$option = $_GET['option'];

if ( $option == 1 ) {
    $data = [ 'a', 'b', 'c' ];
    // will encode to JSON array: ["a","b","c"]
    // accessed as example in JavaScript like: result[1] (returns "b")
} else {
    $data = [ 'name' => 'God', 'age' => -1 ];
    // will encode to JSON object: {"name":"God","age":-1}  
    // accessed as example in JavaScript like: result.name or result['name'] (returns "God")
}

header('Content-type: application/json');
echo json_encode( $data );

قم بتعيين نوع المحتوى مع header('Content-type: application/json'); ثم صدى البيانات الخاصة بك.


من الجيد أيضًا تعيين أمان الوصول - ما عليك سوى استبدال * بالنطاق الذي تريد الوصول إليه.

<?php
header('Access-Control-Allow-Origin: *');
header('Content-type: application/json');
    $response = array();
    $response[0] = array(
        'id' => '1',
        'value1'=> 'value1',
        'value2'=> 'value2'
    );

echo json_encode($response); 
?>

وفيما يلي مزيد من العينات حول ذلك: كيفية تجاوز Access-Control-Allow-Origin؟


نعم ، ستحتاج إلى استخدام الصدى لعرض الإخراج. Mimetype: application / json


هذا هو برنامج نصي بسيط PHP لإرجاع الإناث ومعرف المستخدم كما أن قيمة json ستكون أي قيمة عشوائية كما يمكنك استدعاء البرنامج النصي json.php.

آمل أن يساعد هذا شكرا

<?php
header("Content-type: text/json");
$myObj=new \stdClass();
$myObj->user_id = rand(0, 10);
$myObj->male = rand(0, 5);
$myObj->female = rand(0, 5);
$myJSON = json_encode($myObj);
echo $myJSON;
?>

وفقًا للدليل على json_encode ، يمكن للطريقة إرجاع سلسلة غير ( خطأ ):

إرجاع سلسلة JSON المشفرة على النجاح أو FALSE عند الفشل.

عندما يحدث هذا ، echo json_encode($data) إلى إخراج السلسلة الفارغة ، وهي JSON غير صالحة .

على سبيل المثال ، ستفشل json_encode false ) إذا كانت json_encode تحتوي على سلسلة UTF-8 غير.

يجب تسجيل حالة الخطأ هذه في PHP ، على سبيل المثال مثل:

<?php
header("Content-Type: application/json");

// Collect what you need in the $data variable.

$json = json_encode($data);
if ($json === false) {
    // Avoid echo of empty string (which is invalid JSON), and
    // JSONify the error message instead:
    $json = json_encode(array("jsonError", json_last_error_msg()));
    if ($json === false) {
        // This should not happen, but we go all the way now:
        $json = '{"jsonError": "unknown"}';
    }
    // Set HTTP response status code to: 500 - Internal Server Error
    http_response_code(500);
}
echo $json;
?>

بعد ذلك يجب أن يكون الطرف المستقبل بالطبع على دراية بأن وجود الخاصية jsonError يشير إلى حالة خطأ ، والتي يجب أن تتعامل معها وفقًا لذلك.

في وضع الإنتاج ، قد يكون من الأفضل إرسال حالة خطأ عامة إلى العميل وتسجيل رسائل خطأ أكثر تحديدًا لإجراء تحقيق لاحق.

اقرأ المزيد حول التعامل مع أخطاء JSON في وثائق PHP .





header