تمرير سلسلة PHP (التي تمثل وظيفة JS) من خلال JSON_ENCODE ()
-
29-09-2019 - |
سؤال
أنا أستخدم مكتبة PHP/Codeigniter هذه لـ JQuery Highcharts: http://www.crustiz.com/php-jquery/highcharts-library-for-codeigniter/
الطريقة التي تقوم بها المكتبة بالأشياء هي أنها تبني مجموعة من الخيارات PHP ، ثم تقوم بتحويلها إلى JSON باستخدام JSON_ENCODE (انظر السطر 273 من تلك المكتبة) والذي يستخدم بعد ذلك بواسطة المكون الإضافي JQUERY HIGHCHARTS. هذا جيد ، باستثناء الخيار الذي أحاول استخدامه هو تنسيق تلميح الأدوات ، والذي يجب أن يكون وظيفة JavaScript ، وليس سلسلة (انظر http://www.highcharts.com/ref/#tooltip).
نظرًا لأن المكتبة لا تحتوي على وظيفة تلميح الأدوات ، فقد قمت بإنشاء واحدة كاختبار:
function set_tooltip() {
$this->a_options['tooltip']['formatter'] = 'function() { return this.series.name + "<br>" + this.x + ": " + this.y }';
return $this;
}
ولكن هذا لا يعمل لأن وظيفة JS هي الإخراج كسلسلة ، وليس وظيفة. أي شخص يعرف ما إذا كانت هناك طريقة لجعلها وظيفة بعد المرور عبر json_encode دون إعادة كتابة هذا الجزء من المكتبة؟
المحلول
JSON ليس المقصود نقل الوظائف. إذا ألقيت نظرة على توثيق, ، لا يوجد سوى مواصفات لأربعة أنواع - كائن ، صفيف ، سلسلة ورقم - بالإضافة إلى القيم true
, false
و null
.
إذا أصرت على القيام بذلك ، ربما مثل مقال مثل إرسال وظائف JavaScript على JSON سوف يعطيك يد.
نصائح أخرى
ليس لدى JSON نوع "رد الاتصال" ، لذا أعتقد أن هذا غير ممكن. فإنه يعرف فقط الأنواع الأساسية: string
/ number
/ object
/ array