আমি কীভাবে জাভাস্ক্রিপ্ট ভেরিয়েবলগুলি পিএইচপিতে পাস করব?


150

আমি কোনও ফর্মের মধ্যে একটি লুকানো ইনপুট ব্যবহার করে জাভাস্ক্রিপ্ট ভেরিয়েবলগুলি পিএইচপিতে পাস করতে চাই।

কিন্তু আমি এর মান পেতে পারে না $_POST['hidden1']বা $salarieid। কোথাও কি ভুল আছে?

কোডটি এখানে:

<script type="text/javascript">
    // View what the user has chosen
    function func_load3(name) {
        var oForm = document.forms["myform"];
        var oSelectBox = oForm.select3;
        var iChoice = oSelectBox.selectedIndex;
        //alert("You have chosen: " + oSelectBox.options[iChoice].text);
        //document.write(oSelectBox.options[iChoice].text);
        var sa = oSelectBox.options[iChoice].text;
        document.getElementById("hidden1").value = sa;
    }
</script>

<form name="myform" action="<?php echo $_SERVER['$PHP_SELF']; ?>" method="POST">
    <input type="hidden" name="hidden1" id="hidden1" />
</form>

<?php
   $salarieid = $_POST['hidden1'];
   $query = "select * from salarie where salarieid = ".$salarieid;
   echo $query;
   $result = mysql_query($query);
?>

<table>
   Code for displaying the query result.
</table>

2
আপনি একটি কুকিতে js ভেরিয়েবল মান সংরক্ষণ করতে পারেন এবং পিএইচপি কুকিতে সেই পরিবর্তনশীল অ্যাক্সেস করতে পারেন।
শশী কাঁথ

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

উত্তর:


90

আপনি বর্তমান পৃষ্ঠা জাভাস্ক্রিপ্ট কোড থেকে চলতি পৃষ্ঠা পিএইচপি কোডে পরিবর্তনশীল মানগুলি পাস করতে পারবেন না ... পিএইচপি কোডটি সার্ভারের দিকে চালিত হয় এবং ক্লায়েন্টের পক্ষে কী চলছে সে সম্পর্কে এটি কিছুই জানে না।

অন্য কোনও প্রক্রিয়া যেমন আপনার জিইটি বা পোষ্ট পদ্ধতি ব্যবহার করে ফর্ম জমা দেওয়ার জন্য এইচটিএমএল ফর্ম থেকে পিএইচপি কোডে আপনাকে ভেরিয়েবলগুলি পাস করতে হবে।

<DOCTYPE html>
<html>
  <head>
    <title>My Test Form</title>
  </head>

  <body>
    <form method="POST">
      <p>Please, choose the salary id to proceed result:</p>
      <p>
        <label for="salarieids">SalarieID:</label>
        <?php
          $query = "SELECT * FROM salarie";
          $result = mysql_query($query);
          if ($result) :
        ?>
        <select id="salarieids" name="salarieid">
          <?php
            while ($row = mysql_fetch_assoc($result)) {
              echo '<option value="', $row['salaried'], '">', $row['salaried'], '</option>'; //between <option></option> tags you can output something more human-friendly (like $row['name'], if table "salaried" have one)
            }
          ?>
        </select>
        <?php endif ?>
      </p>
      <p>
        <input type="submit" value="Sumbit my choice"/>
      </p>
    </form>

    <?php if isset($_POST['salaried']) : ?>
      <?php
        $query = "SELECT * FROM salarie WHERE salarieid = " . $_POST['salarieid'];
        $result = mysql_query($query);
        if ($result) :
      ?>
        <table>
          <?php
            while ($row = mysql_fetch_assoc($result)) {
              echo '<tr>';
              echo '<td>', $row['salaried'], '</td><td>', $row['bla-bla-bla'], '</td>' ...; // and others
              echo '</tr>';
            }
          ?>
        </table>
      <?php endif?>
    <?php endif ?>
  </body>
</html>

@ সের্গে, আমি এখানে পোস্ট পদ্ধতি দিয়ে ফর্ম জমা দেওয়ার ব্যবহার করেছি, কেন জানি না এটি কাজ করে না। তুমি কি জানো কেন? আর কীভাবে সমাধান করব?
সান জিয়াংগং

@ সেরজি, তাই আমাকে এজ্যাক্স ব্যবহার করা দরকার? আসলে, আমি তার সাথে ফ্যামিলিয়ার আছি।
সান জিয়াংগং

আসলে, আমি আপনার পদ্ধতিটি গত এক স্তরের নির্বাচন বাক্সে ব্যবহার করেছি। তবে এখন আমি একটি তিনটি শৃঙ্খলযুক্ত বাক্স তৈরি করেছি, সুতরাং আমি আপনার পদ্ধতিটি ব্যবহার করতে পারি না।
সান জিয়াংগং

এই মুহূর্তে: হ্যাঁ, আপনার এজেএক্স প্রযুক্তি ব্যবহার করা উচিত। যদি আপনার উপলব্ধি নিয়ে সমস্যা হয় তবে আমি মনে করি আমি সাহায্য করতে পারি।
সের্গেই কুজনেটভ

3
@ মাডারাউচিহ ওপি ইতিমধ্যে mysql_ফাংশন ব্যবহার করেছে ; সম্পূর্ণ পুনর্লিখন দিয়ে এই প্রশ্নের উত্তর দেওয়ার লক্ষ্য হবে না।
জ্যাক ২৪

26

এটি কেবল একটি কুকিতে সংরক্ষণ করুন:

$(document).ready(function () {
  createCookie("height", $(window).height(), "10");
});

function createCookie(name, value, days) {
  var expires;
  if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    expires = "; expires=" + date.toGMTString();
  }
  else {
    expires = "";
  }
  document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/";
}

এবং তারপরে এটি পিএইচপি সহ পড়ুন:

<?PHP
   $_COOKIE["height"];
?>

এটি একটি সুন্দর সমাধান নয়, তবে এটি কার্যকর হয়।


2
Finaly! একটি বিক্রয় যে কাজ করে! আমি এখন একটি বিক্রয় করার জন্য কয়েক ঘন্টা খুঁজছি, একটি গেম তৈরি করছি এবং একটি ডাটাবেসে সর্বোচ্চ স্কোরটি পাঠাতে চাই, এটি এখনই ঠিক হয়ে গেছে! চিয়ার্স!
সিড-এল

1
আসলে, এটি একটি দুর্দান্ত সমাধান! পিএইচপি থেকে জাভাস্ক্রিপ্টে যাওয়া সহজ। জাভাস্ক্রিপ্ট থেকে পিএইচপি করা সহজ নয়। কুকি ব্যবহার করা সহজ, মার্জিত। না বিএস .. !! অবশ্যই যদি ক্লায়েন্ট কুকিজ বন্ধ করে
রাখে ,,,,

আপনি কী দয়া করে আমাকে কীভাবে নাম, মান পেতে $ _COOKIE ["উচ্চতা"] জিনিসটি ব্যবহার করবেন তা আমাকে জানান? ধন্যবাদ। আমার জন্য কাজ করছে না।
জ্যাক

4
সমস্ত উত্সাহ থাকা সত্ত্বেও, এটি একটি ভাল সমাধান নয়। কারণ: পরের বার ব্রাউজার দ্বারা অনুরোধ করা না হওয়া পর্যন্ত কুকি সার্ভারের দ্বারা দেখা যায় না । এটি সর্বদা "পিছনে একটি"। পৃষ্ঠাটি প্রথমবার ব্রাউজারে খোলার পরে কোনও কুকি থাকবে না। এটা কি গ্রহণযোগ্য? পরের বার পৃষ্ঠাটি ব্রাউজারে খোলার পরে প্রথমবারের মতো একটি কুকি থাকবে। একটি ধ্রুবক মানের জন্য, যেমন এই উদাহরণ, এটি সহনীয় হতে পারে (প্রথমবার কাজ না করেও !!)। এখন একটি গতিশীল মান যেমন বর্তমান তারিখের সময় বিবেচনা করুন। পিএইচপি এখনই নয়, পূর্বের তারিখের সময়টি দেখতে পাবে। এজ্যাক্স ব্যবহার করুন।
টুলমেকারস্টেভ

20

জাভাস্ক্রিপ্ট থেকে পিএইচপি-তে ভেরিয়েবলগুলি পাস করার বিভিন্ন উপায় রয়েছে (অবশ্যই বর্তমান পৃষ্ঠা নয়)।

আপনি করতে পারেন:

  1. এখানে বর্ণিত হিসাবে ফর্মের তথ্য প্রেরণ করুন (একটি পৃষ্ঠা রিফ্রেশের ফলাফল হবে)
  2. এটি অ্যাজাক্সে পাস করুন (বেশ কয়েকটি পোস্ট সে সম্পর্কে এখানে রয়েছে) (কোনও পৃষ্ঠা রিফ্রেশ ছাড়াই)
  3. এক্সএমএলএইচটিপি অনুরোধ অনুরোধের মাধ্যমে এইচটিটিপি অনুরোধ করুন (পৃষ্ঠার রিফ্রেশ ছাড়াই):

 if (window.XMLHttpRequest){
     xmlhttp = new XMLHttpRequest();
 }

else{
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 }

 var PageToSendTo = "nowitworks.php?";
 var MyVariable = "variableData";
 var VariablePlaceholder = "variableName=";
 var UrlToSend = PageToSendTo + VariablePlaceholder + MyVariable;

 xmlhttp.open("GET", UrlToSend, false);
 xmlhttp.send();

আমি নিশ্চিত যে এটি সমস্ত ভেরিয়েবল এবং নোটনোটের মাধ্যমে ফ্যানসিয়ার এবং লুপ তৈরি করার জন্য তৈরি করা যেতে পারে - তবে আমি নবীনদের পক্ষে এটি বুঝতে সহজতর করার জন্য এটি বেসিক রেখেছি।


আমি কীভাবে ডিবি অ্যারে পাব এবং যখনই আমি নতুন ফর্ম জমা দেই তখনই এটি জাভাস্ক্রিপ্টে পাস করব about তারপরে জাভাস্ক্রিপ্টে পরিবর্তনশীলও পরিবর্তন হবে change কীভাবে? আমাকে সাহায্য কর. :(
ভিনসেন্ট

3
অ্যাজাক্স আসলে এক্সএমএলএইচটিপিআরকোয়েস্ট, পরেরটি এটির জন্য কেবল প্রযুক্তিগত শব্দ।
অ্যালেক্স সি

14

এখানে কার্যকারী উদাহরণটি রয়েছে: একই পৃষ্ঠায় পিএইচপি তে জাভাস্ক্রিপ্ট ভেরিয়েবল মান পান।

<script>
var p1 = "success";
</script>

<?php
echo "<script>document.writeln(p1);</script>";
?>

1
আমি এই প্রম্পটটি চেষ্টা করেছিলাম তবে সত্যই কাজ হয়েছে, তবে আমি যদি এইরকম চেষ্টা করি তবে: <? Php var x = <script> document.writeln (p1); </script> ";?>, তারপর এক্সো; এটি কাজ করে না। আপনার কি অন্য উপায় আছে?
জুনা

3
আপনি এই <script> var p1 = "সাফল্য" এর মতো চেষ্টা করতে পারেন; </script> <? php $ x = "<script> document.writeln (p1); </script>"; প্রতিধ্বনি $ x; ?>
আরসলান তাবাসসুম

3
এই ক্ষেত্রে পিএইচপি কেবল পাতায় স্ট্রিং হিসাবে জাভাস্ক্রিপ্ট প্রতিধ্বনি করছে। জাভাস্ক্রিপ্ট পিএইচপি তে পাস হচ্ছে না।
বেন

হ্যাঁ, আমাদের এটি করা দরকার ... কখনও কখনও আমাদের একই পৃষ্ঠায় এবং পৃষ্ঠাকে রিফ্রেশ না করে পিএইচপি তে জাভাস্ক্রিপ্ট মান ব্যবহার করা প্রয়োজন ... তবে এটি
আরসলান তাবাসসাম

1
@ আরস্লানটাবাসম না, আপনি মন্তব্যটি ভুল বুঝেছেন। পিএইচপি কখনও পি 1 এর মান দেখতে পায় নাecho "<script>document.writeln(p1);</script>";জাভাস্ক্রিপ্ট পরিবর্তনশীল ব্যবহার p1মধ্যে জাভাস্ক্রিপ্ট পিএইচপি না। ব্রাউজারে document.writelnএকটি জাভাস্ক্রিপ্ট ফাংশন, যা আপনি চালাচ্ছেন, যখন ব্রাউজারটি HTML পৃষ্ঠা তৈরি করছে।
টুলমেকারস্টেভ

6

পিএইচপি সার্ভারে পৃষ্ঠাটি ব্যবহারকারীর কাছে প্রেরণের আগে চালিত হয়, জাভা স্ক্রিপ্টটি এটি পাওয়ার পরে ব্যবহারকারীর কম্পিউটারে চালিত হয়, তাই পিএইচপি স্ক্রিপ্টটি ইতিমধ্যে কার্যকর হয়ে গেছে।

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

এখানে আরও পূর্ববর্তী প্রশ্ন যা আপনি আরও তথ্যের জন্য অনুসরণ করতে পারেন: আজাক্স টিউটোরিয়াল

এখন যদি আপনাকে কেবল সার্ভারে একটি ফর্ম মান পাস করতে হয়, আপনি কেবল একটি সাধারণ ফর্ম পোস্টও করতে পারেন, এটি একই কাজ করে তবে পুরো পৃষ্ঠাটি রিফ্রেশ করতে হবে।

<?php
if(isset($_POST))
{
  print_r($_POST);
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  <input type="text" name="data" value="1" />
  <input type="submit" value="Submit" />
</form>

জমাটি ক্লিক করা পৃষ্ঠাটি জমা দেবে এবং জমা দেওয়া ডেটা প্রিন্ট করে ফেলবে।


1
@ জুরাহান, হ্যাঁ, সম্ভবত আমি এক্সএমএলএইচটিপিআরকিউস্ট ব্যবহার করার চেষ্টা করেছি, তাই আমি জাভাস্ক্রিপ্ট ব্যবহার করে একই পৃষ্ঠায় পিএইচপি স্ক্রিপ্টে জাভাস্ক্রিপ্টের মানটি পাস করতে পারি না? আমি অনেক অনুসন্ধান করেছি, কেউ বলছেন এটি আকারে লুকানো ইনপুট দিয়ে করা যেতে পারে। আমার কি এই সমাধানটি ফারথার চেষ্টা করার দরকার আছে?
সান জিয়াংগং

6

আমি নিজেই এটি বের করার চেষ্টা করছিলাম এবং তখন বুঝতে পারি যে সমস্যাটি পরিস্থিতিটি দেখার মতো এটি একটি পিছনের দিক। জাভাস্ক্রিপ্ট থেকে পিএইচপি-তে জিনিসগুলি স্থান দেওয়ার চেষ্টা করার পরিবর্তে, বেশিরভাগ ক্ষেত্রেই সম্ভবত অন্যভাবে যাওয়া ভাল। পিএইচপি কোড সার্ভারে কার্যকর করে এবং এইচটিএমএল কোড তৈরি করে (এবং সম্ভবত জাভা স্ক্রিপ্টও)। তারপরে ব্রাউজারটি পৃষ্ঠাটি লোড করে এবং এইচটিএমএল এবং জাভা স্ক্রিপ্ট কার্যকর করে।

মনে হয় এটির মতো পরিস্থিতির কাছে আসার বুদ্ধিমান উপায় হ'ল পিএইচপি ব্যবহার করে জাভাস্ক্রিপ্ট এবং এইচটিএমএল আপনি চান যা তৈরি করতে পারেন এবং তারপরে পিএইচপি যা করতে পারে না তার জন্য পৃষ্ঠাতে জাভাস্ক্রিপ্ট ব্যবহার করতে পারে। দেখে মনে হচ্ছে এটি আপনাকে পিএইচপি এবং জাভাস্ক্রিপ্ট উভয়ের সুবিধাকে মোটামুটি সহজ এবং সোজাভাবে এগিয়ে দেবে।

আমি একটি কাজ করেছি যা ফ্লাইয়ের সময় আপনার পৃষ্ঠা থেকে পিএইচপিকে জিনিসগুলি পাস করার চেহারা দেয় যা পিএইচপি কোডে কল করতে এইচটিএমএল চিত্র ট্যাগ ব্যবহার করে। এটার মতো কিছু:

<img src="pic.php">

আপনার ওয়েবপৃষ্ঠাটি লোড হওয়ার আগেই পি.ইচ.পি.পি. পিএইচপি কোডটি আসলে এইচটিএমএল কোড তৈরি করতে পারে তবে এইচটিএমএল কোডটি মূলত ফ্লাইতে ডাকা হত। এখানে পিএইচপি কোডটি আপনার পৃষ্ঠায় একটি ছবি তৈরি করতে ব্যবহার করা যেতে পারে তবে এতে এটির পাশাপাশি আপনার পছন্দ মতো কোনও আদেশ থাকতে পারে। হতে পারে এটি আপনার সার্ভারে কিছু ফাইলের বিষয়বস্তু ইত্যাদির পরিবর্তন করে ইত্যাদি this চিত্র। ইউআরএল-এর পরামিতিগুলির মাধ্যমে আপনার পিএইচপি কোডে ভেরিয়েবলগুলি পাস করার বিকল্প রয়েছে। পেজ কাউন্টারগুলি অনেক ক্ষেত্রে এই কৌশলটি ব্যবহার করবে।


5

নীচে কোডগুলিতে প্রদর্শিত কুকিগুলি ব্যবহার করে আমরা সহজেই একই / ভিন্ন পৃষ্ঠায় মানগুলি পাস করতে পারি (আমার ক্ষেত্রে, আমি এটি ফেসবুক ইন্টিগ্রেশন দিয়ে ব্যবহার করছি) -

function statusChangeCallback(response) {
    console.log('statusChangeCallback');
    if (response.status === 'connected') {
        // Logged into your app and Facebook.
        FB.api('/me?fields=id,first_name,last_name,email', function (result) {
            document.cookie = "fbdata = " + result.id + "," + result.first_name + "," + result.last_name + "," + result.email;
            console.log(document.cookie);
        });
    }
}

এবং আমি এটি ব্যবহার করে (যে কোনও ফাইলে) অ্যাক্সেস করেছি -

<?php 
    if(isset($_COOKIE['fbdata'])) { 
        echo "welcome ".$_COOKIE['fbdata'];
    }
?>

5

আমি এটি কীভাবে করেছি তা এখানে (আমার পিএইচপি-তে স্থানীয় সময় অঞ্চল toোকানো দরকার:

<?php
    ob_start();
?>

<script type="text/javascript">

    var d = new Date();
    document.write(d.getTimezoneOffset());
</script>

<?php
    $offset = ob_get_clean();
    print_r($offset);

2

আপনার ফাংশন, যা লুকানো ফর্ম মান সেট করা হয়, বলা হচ্ছে? এটি এই উদাহরণে নেই। সার্ভারে ফর্মটি পোস্ট করার আগে কোনও লুকানো মান পরিবর্তন করতে আপনার কোনও সমস্যা হবে না ।


@ পার্সিলিটিস, আপনি ঠিক বলেছেন, আমি ফাংশনটি কল করি নি। আপনি কি পিএইচপি এ কল করতে জানেন?
সান জিয়াংং

হুম। দেখে মনে হচ্ছে যেন কেউ যখন আপনার ফর্ম / অনক্লিক হ্যান্ডলার থেকে কিছু নির্বাচন করে তখন আপনি কল করতে চান। পিএইচপি থেকে এটি কল করার কোনও মানে হয় না। কেউ একটি ফর্ম মান নির্বাচন করে, আপনার ফাংশন অগ্নিকাণ্ডে, একটি লুকানো ফর্ম মান আপডেট করে, তারপরে ফর্ম পোস্টে পিএইচপি করার উপায় তৈরি করে। কোন?
মহামারী

@ মহামারী, আমি কাউকে সিলেক্টবক্সে একটি আইটেম নির্বাচন করতে দিতে চাই এবং আমি যখন সাবমিট বোতামটি ক্লিক করি তখন একটি সন্ধানের ফলাফলটি একটি সারণীতে প্রদর্শিত হবে। সুতরাং ব্যাকএন্ডে, আমি যখন আইটেমটি বেছে নেব, তার মানটি ভেরিয়েবল হিসাবে পিএইচপিতে একটি মাইএসকিএল কোয়েরিতে পৌঁছে যাবে। এই আমি কি করতে চান। তবে মনে হচ্ছে জাভাস্ক্রিপ্টে আমি সমাধানটি খুঁজে পাচ্ছি না। আপনার কি কোনও ক্লু আছে?
সান জিয়াংং

হ্যাঁ, ফর্মটিতে পোস্ট করুন বা পান পদ্ধতি যদি এটি কাজ করে তবে তা গ্রহণযোগ্য হবে।
সান জিয়াংং

2

আপনার কোডটির সাথে কিছু জিনিস ভুল আছে।

  • আপনি একটি জাভাস্ক্রিপ্ট ফাংশন, ফানক_লোড 3 () সংজ্ঞায়িত করেছেন তবে এটি কল করবেন না।
  • আপনার ফাংশনটি ভুল জায়গায় সংজ্ঞায়িত করা হয়েছে। এটি যখন আপনার পৃষ্ঠায় সংজ্ঞায়িত করা হয়, তখন এটি বর্ণিত এইচটিএমএল অবজেক্টগুলি এখনও লোড হয়নি। বেশিরভাগ জাভাস্ক্রিপ্ট কোডটি পরীক্ষা করে দেখা যায় যে ডকুমেন্টটি কার্যকর হওয়ার আগে পুরোপুরি লোড হয়েছে কিনা, বা আপনি পৃষ্ঠাটিতে উল্লিখিত উপাদানগুলি পেরিয়ে আপনার কোডটি সরাতে পারবেন।
  • আপনার ফর্মটি এটি জমা দেওয়ার কোনও উপায় নেই। এটি একটি জমা বোতাম প্রয়োজন।
  • আপনার ফর্মটি জমা দেওয়া হয়েছে কিনা তা আপনি পরীক্ষা করেন না।

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

<?php
if (isset($_POST['hidden1'])) {
   echo "You submitted {$_POST['hidden1']}";
   die;
}

echo <<<HTML
   <form name="myform" action="{$_SERVER['PHP_SELF']}" method="post" id="myform">
      <input type="submit" name="submit" value="Test this mess!" />
      <input type="hidden" name="hidden1" id="hidden1" />
   </form>

   <script type="text/javascript">
      document.getElementById("hidden1").value = "This is an example";
   </script>
HTML;
?>

2

যখন আপনার পৃষ্ঠাটি প্রথমে পিএইচপি কোডটি লোড করে এবং আপনার ওয়েবপৃষ্ঠার সম্পূর্ণ বিন্যাস সেট করে। পৃষ্ঠা বিন্যাসের পরে, এটি জাভাস্ক্রিপ্ট লোড আপ সেট করে। এখন জাভাস্ক্রিপ্ট সরাসরি DOM এর সাথে যোগাযোগ করে এবং লেআউটটি ম্যানিপুলেট করতে পারে তবে পিএইচপি এটি পৃষ্ঠাটি রিফ্রেশ করার প্রয়োজন হয় না can't আপনার পৃষ্ঠাকে রিফ্রেশ করা এবং পৃষ্ঠার ইউআরএলটিতে প্যারামিটারগুলি পাস করার একমাত্র উপায় রয়েছে যাতে আপনি পিএইচপি এর মাধ্যমে ডেটা পেতে পারেন। সুতরাং আমরা পৃষ্ঠা পুনরায় লোড ছাড়াই পিএইচপি দিয়ে জাভাস্ক্রিপ্ট ইন্টারেক্ট করার জন্য এজেএক্স ব্যবহার করি। এজ্যাক্স এপিআই হিসাবেও ব্যবহার করা যেতে পারে। আপনি যদি পিএইচপি-তে ইতিমধ্যে ভেরিয়েবল ঘোষণা করে থাকেন তবে আরও একটি জিনিস। পৃষ্ঠাটি লোড হওয়ার আগে আপনি এটি আপনার জাভাস্ক্রিপ্ট উদাহরণ দিয়ে ব্যবহার করতে পারেন।

<script>
var username = "<?php echo $myname;?>";
alert(username);
</script>

উপরের কোডটি সঠিক এবং এটি কাজ করবে। তবে নীচের কোডটি সম্পূর্ণ ভুল এবং এটি কখনই কার্যকর হবে না।

<script>
    var username = "syed ali";
    var <?php $myname;?> = username;
    alert(myname);
    </script>
  • AJAX এর মাধ্যমে জাভাস্ক্রিপ্ট থেকে পিএইচপি পর্যন্ত মান পাস করুন

    এটি করা সবচেয়ে নিরাপদ উপায়। কারণ HTML বিষয়বস্তু বিকাশকারী সরঞ্জামগুলির মাধ্যমে সম্পাদনা করা যেতে পারে এবং ব্যবহারকারী ডেটা ম্যানিপুলেট করতে পারে। সুতরাং আপনি যদি এই ভেরিয়েবলের উপরে সুরক্ষা চান তবে এজ্যাক্স ব্যবহার করা ভাল if

জাভাস্ক্রিপ্ট ভেরিয়েবলকে পিএইচপি-তে পাস করার সর্বোত্তম এবং সুরক্ষিত উপায় হ'ল এজেএক্সের মাধ্যমে

সাধারণ এজেএক্স উদাহরণ

var mydata = 55;
var myname = "syed ali";
var userdata = {'id':mydata,'name':myname};
    $.ajax({
            type: "POST",
            url: "YOUR PHP URL HERE",
            data:userdata, 
            success: function(data){
                console.log(data);
            }
            });
  • গুপ্ত ক্ষেত্রগুলির মাধ্যমে জাভাস্ক্রিপ্ট থেকে পিএইচপি পর্যন্ত পাস মান।

অন্যথায়, আপনি আপনার ফর্মের ভিতরে লুকানো এইচটিএমএল ইনপুট তৈরি করতে পারেন। মত

<input type="hidden" id="mydata">

তারপরে jQuery বা জাভা স্ক্রিপ্টের মাধ্যমে লুকানো ক্ষেত্রে মানটি প্রেরণ করুন। মত

<script>
var myvalue = 55;
$("#mydata").val(myvalue);
</script>

এখন আপনি ফর্মটি জমা দেওয়ার সময় আপনি পিএইচপি তে মান পেতে পারেন।


1
ধন্যবাদ. খুব উপকারী. JQuery পদ্ধতিটি আপনাকে পৃষ্ঠাটি চালুর সাথে সাথে উত্পন্ন ডেটা পাস করতে দেয় না? আপনি কোনও মানতে একটি ইনপুট ক্ষেত্র সেট করতে পারবেন না এবং এটিকে পিএইচপি দ্বারা বাছাই করতে পারবেন? এটি আমি দেখতে পেলাম এমন একটি পরিষ্কার এজাজ্য উদাহরণ। আমি এটি চেষ্টা করার জন্য অপেক্ষা করছি।
কার্লস

1

আপনি jquery সিরিয়ালাইজ () পদ্ধতিটি ব্যবহার করতে পারেন যাতে সবকিছু একযোগে হয়ে যায়।

var data=$('#myForm').serialize();

// আপনি সার্ভার সাইডেও লুকানো মানটি পেতে পারেন।


0

স্পষ্টতই এই সমাধানটির আগে উল্লেখ করা হয়নি। আপনি ব্রাউজার থেকে সার্ভারে ফিরে ডেটা পাঠাতে কুকি ব্যবহার করতে পারেন।

ব্রাউজারে জাভাস্ক্রিপ্ট ব্যবহার করে আপনি যে ডেটা পিএইচপি পাস করতে চান তা দিয়ে একটি কুকি সেট করুন।

তারপরে, পিএইচপি সাইডে কেবল এই কুকিটি পড়ুন।


। । । আপনি একটি উদাহরণ দিতে চান এবং একটি প্রাসঙ্গিক লিঙ্ক বা দুটি? (দেখুন কীভাবে উত্তর দিন See )
ashleedawg

0

আমরা সরাসরি পিএইচপি কোডে জাভাস্ক্রিপ্ট ভেরিয়েবল মানগুলি পাস করতে পারি না ... পিএইচপি কোডটি সার্ভারের দিকে চালিত হয় এবং ক্লায়েন্টের পক্ষে কী চলছে সে সম্পর্কে এটি কিছুই জানে না।

সুতরাং পিএইচপি কোডে জাভাস্ক্রিপ্ট মানটি পার্স করার জন্য এজেএক্স ব্যবহার করা ভাল।

অথবা বিকল্পভাবে আমরা আমাদের কোডটিতে কুকিজের সাহায্যে এটি সম্পন্ন করতে পারি।

ধন্যবাদ ও চিয়ার্স

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.