পিএইচপি থেকে জাভাস্ক্রিপ্টে JSON ফিরছেন?


135

আমার কাছে একটি পিএইচপি স্ক্রিপ্ট রয়েছে যা jQuery AJAX এর মাধ্যমে কল করা হচ্ছে। আমি পিএইচপি স্ক্রিপ্টটি JSON ফর্ম্যাটে ডেটা জাভাস্ক্রিপ্টে ফিরিয়ে দিতে চাই। এখানে পিএইচপি স্ক্রিপ্টে সিউডো কোডটি রয়েছে:

$json = "{";
foreach($result as $addr)
{
    foreach($addr as $line)
    {
        $json .= $line . "\n";
    }
    $json .= "\n\n";
}
$json .= "}";

মূলত, $ json এ লুপ sertedোকানোর জন্য আমার দু'এর ফলাফলের প্রয়োজন।

উত্তর:


194

পিএইচপি-র একটি ইনবিল্ট জেএসএন সিরিয়ালাইজেশন ফাংশন রয়েছে।

json_encode

json_encode

দয়া করে এটি ব্যবহার করুন যদি আপনি এখানে আবিষ্কার না হওয়া সিনড্রোমে ভোগ করতে পারেন এবং না হন।


2
চমৎকার আপনাকে ধন্যবাদ. এসও তে পোস্ট করার আগে আমি এটি সত্যই দেখেছিলাম তবে আমার হোস্টিংয়ে এটি উপলব্ধ হবে বলে আমি ভাবি নি।
অ্যাকুইনাসটব

এই 'উত্তর' সম্পূর্ণ নয় বরং ব্যবহারযোগ্য। আরও সম্পূর্ণ তথ্যের জন্য আইজডের উত্তর দেখুন।
ফানক ডক

@ ফঙ্কডোক প্রশ্নে ওপি হ'ল জেএসওএনকে একসাথে স্ট্রিং করছিল, এই অনুমানের অধীনে যে তাদের একমাত্র পছন্দ। এগুলি জেনে রাখা তাদের একমাত্র পছন্দ ছিল না উপযুক্ত সমাধান। এই জেএসএনের শেষ ফলাফলটি এইচটিটিপি প্রতিক্রিয়া হিসাবে নির্গত হবে এমন কোনও বাধ্যবাধকতা নেই । "একটি শিরোনাম যুক্ত করুন" তথ্য, এক পরিস্থিতিতে কার্যকর হলেও আপনি যদি জেএসওএন এর সাথে যা করছেন তা কেবল "এটি ওয়েব পৃষ্ঠায় অক্ষরে অক্ষরে ফিরিয়ে" না দিলে আপনাকে সাহায্য করবে না। প্রশ্নটি ইউজকেসে স্পষ্টতা যোগ করতে পারেনি।
কেন্ট ফ্রেড্রিক

(অতিরিক্তভাবে, এজেএক্সের জন্য শিরোলেখ স্থাপন করা কঠোরভাবে প্রয়োজন হয় না I আমি যদি আকস্মিক মনে হয় তবে ক্ষমা প্রার্থনা করছি, তবে উদ্ধৃতিতে "'উত্তর' শব্দটি দিয়ে দেওয়া ছায়াটি আমাকে সত্যিই ক্ষতবিক্ষত করেছে, এটি 10 ​​বছর আগে ছিল, এটি ইতিমধ্যে মারা যায়। আমি অনেক আগে পিএইচপি থেকে সরেছেন যে ভাষা আমি সরানো এখন করছি এছাড়াও থেকে দূরে সরানোর)।
কেন্ট Fredric

145

এখানে পূর্বের উত্তরে দু'টি জিনিস অনুপস্থিত:

  1. আপনার পিএইচপি মধ্যে শিরোনাম সেট করুন:

    header('Content-type: application/json');
    echo json_encode($array);
  2. json_encode()জাভাস্ক্রিপ্ট অবজেক্টের পরিবর্তে একটি জাভাস্ক্রিপ্ট অ্যারে ফিরতে পারে , দেখুন: একটি পিএইচপি স্ক্রিপ্ট থেকে জেএসএন ফিরিয়ে দেওয়া কিছু ক্ষেত্রে এটি জেনে রাখা গুরুত্বপূর্ণ কারণ অ্যারে এবং অবজেক্টগুলি এক নয়।


2
এটি লক্ষণীয় গুরুত্বপূর্ণ যে ডেটাটি রিটার্ন এডের পরিবর্তে ইকো হয় ! প্রথমে ধারণাটি শিখার সময় আমাকে এই সময়ের জন্য বিট করুন। কারণ সাধারণ প্রোগ্রামিংয়ে প্রায় প্রতিটি জিনিসই "মুদ্রিত" না হয়ে ফিরে আসে।
জুহা আনটিনেন

আরে @ জুহা, মনে রাখবেন যে json_encode()(সমস্ত ফাংশনের মতো) সর্বদা কিছু ফিরিয়ে দেয় (সহ NULL); আপনি ডাটা মুদ্রণ করতে পারেন, এটি প্রক্রিয়া এবং তারপর, একটি ফাইলে এটি মুদ্রণ, পরে ব্যবহার করার জন্য একটি পরিবর্তনশীল তা অ্যাসিং, এটি সংরক্ষণ করুন ইত্যাদি ... আপনি সম্বন্ধে আরও পড়তে পারেন returnমধ্যে পিএইচপি: মান রিটার্নিং । এছাড়াও আপনি প্রতিটি ফাংশন কীভাবে রিটার্ন জানেন না তার জন্য আপনি (এবং উচিত!) যাচাই করতে পারেন, আমাদের উদাহরণটি দেখুন json_encode () এতে বলা হয়েছে যে সাফল্যের জন্য একটি JSON
aesede

তারপরে, আমি ভাবছিলাম কেন কেন return json_encode($jsonArray);কাজ হয়নি (AngularJS http.get কিছুই পেল না), যতক্ষণ না আমি পরে তা লক্ষ্য করেছি :)
জুহা আনটিনেন

83

পিএইচপি এর ডকুমেন্টেশনে একটি জেএসএন বিভাগ রয়েছে। যদিও আপনার পিএইচপি 5.2.0 প্রয়োজন হবে।

পিএইচপি 5.2.0 হিসাবে, জেএসওএন এক্সটেনশনটি ডিফল্টরূপে পিএইচপিতে বান্ডিল এবং সংকলিত হয়।

আপনি যদি না করেন তবে এখানে পিসিএল লাইব্রেরি ইনস্টল করতে পারেন।

<?php
    $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

    echo json_encode($arr); // {"a":1,"b":2,"c":3,"d":4,"e":5}
?>

13

সাধারণত আপনি প্রাপ্তির শেষে আপনার ডেটাতে কিছু কাঠামো তৈরি করতে আগ্রহী হবেন:

json_encode($result)

এটি অ্যারে কীগুলি পাশাপাশি সংরক্ষণ করবে।

মনে রাখবেন যে json_encode কেবল utf8- এনকোডড ডেটাতে কাজ করে।


4

আপনি পিএইচপি জন্য সহজ JSON ব্যবহার করতে পারেন । এটি শিরোনাম আপনাকে JSON জালিয়াতি করতে সহায়তা প্রেরণ করে।

এটা দেখতে অনেকটা :

<?php
// Include the json class
include('includes/json.php');

// Then create the PHP-Json Object to suits your needs

// Set a variable ; var name = {}
$Json = new json('var', 'name'); 
// Fire a callback ; callback({});
$Json = new json('callback', 'name'); 
// Just send a raw JSON ; {}
$Json = new json();

// Build data
$object = new stdClass();
$object->test = 'OK';
$arraytest = array('1','2','3');
$jsonOnly = '{"Hello" : "darling"}';

// Add some content
$Json->add('width', '565px');
$Json->add('You are logged IN');
$Json->add('An_Object', $object);
$Json->add("An_Array",$arraytest);
$Json->add("A_Json",$jsonOnly);

// Finally, send the JSON.

$Json->send();
?>

সতর্কতা: পিএইচপি-র জন্য সাধারণ জেএসএনটি জিপিএলভি 2 লাইসেন্সযুক্ত, সুতরাং এটির জন্য আপনার নিজের কোডটি অবশ্যই ওপেন সোর্স হতে হবে।
জেমি বার্চ

1
এখন এমআইটি লাইসেন্স :)
অ্যালেক্সিস পাউকস

1
@ জামিবার্চ অনুশীলনে আমার মনে হয় আপনি জিপিএল কীভাবে কাজ করে তা ভুল বুঝে যাচ্ছেন। আপনি যদি এজিপিএল সম্পর্কে কথা বলছিলেন তবে আপনি কোনও কিছুর দিকে চলে যাবেন। তবে জিপিএল সফ্টওয়্যারগুলিতে ইন্টারনেটের বিস্তৃত স্ক্রাইডগুলি নির্মিত হয় এবং তাদের কোডটি উন্মুক্ত করার কোনও বাধ্যবাধকতা নেই কারণ তারা ব্যবহারকারীদের তাদের নিয়ন্ত্রণে কোনও এক্সিকিউটেবলই দিচ্ছে না, কেবল এটির জন্য একটি ইন্টারফেস সরবরাহ করে। তাদের একমাত্র বাধ্যবাধকতা হ'ল তারা যে কেউ প্রকল্পের ডিজিটাল অনুলিপি দেয় তাদের অবশ্যই উত্স দেওয়া উচিত।
কেন্ট ফ্রেড্রিক

1

$ msg = "আপনি ভুল ব্যবহারকারী নাম বা পাসওয়ার্ড লিখুন"; $ Responso = json_encode ($ বার্তা);

echo "{\"status\" : \"400\", \"responce\" : \"603\", \"message\" : \"You Enter Wrong Username OR Password\", \"feed\":".str_replace("<p>","",$responso). "}";
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.