Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk menukar tatasusunan js kepada tatasusunan php
Dalam pembangunan web, memandangkan JavaScript (JS) dan PHP ialah dua bahasa pengaturcaraan yang paling biasa digunakan, tatasusunan tidak dapat dielakkan dalam proses pembangunan. Sebagai tindak balas kepada situasi ini, banyak kali kita perlu menukar tatasusunan JS kepada tatasusunan PHP. Terdapat banyak cara untuk mencapai fungsi ini, yang akan diperkenalkan satu persatu di bawah.
Kaedah 1: Gunakan permintaan AJAX
Dalam mod pembangunan pemisahan bahagian hadapan dan belakang, aplikasi bahagian hadapan dan belakang biasanya menggunakan permintaan AJAX untuk berkomunikasi. Oleh itu, kita boleh menggunakan permintaan AJAX untuk menghantar tatasusunan JS ke latar belakang Selepas latar belakang menerimanya, ia boleh memprosesnya dengan sewajarnya dan menukar tatasusunan JS kepada tatasusunan PHP.
Kod JS adalah seperti berikut:
// 定义JS数组 var jsArr = ['apple', 'banana', 'orange']; // 新建AJAX请求 var xhr = new XMLHttpRequest(); // 设置请求的方式、发送目标页面和是否异步请求 xhr.open('POST', '处理JS数组的PHP页面地址', true); // 设置请求头 xhr.setRequestHeader('Content-Type', 'application/json'); // 发送请求 xhr.send(JSON.stringify(jsArr)); // 监听请求 xhr.onreadystatechange = function(){ // 当请求处理完成后进行操作 if (xhr.readyState == 4 && xhr.status == 200) { // 获取后台返回的结果 var phpArr = JSON.parse(xhr.responseText); console.log(phpArr); } }
Kod PHP adalah seperti berikut:
<?php // 获取JS数组 $jsArr = json_decode(file_get_contents('php://input'), true); // 进行相应的处理 // ...... // 将JS数组转为PHP数组 $phpArr = array(); foreach ($jsArr as $value) { $phpArr[] = $value; } // 返回结果 echo json_encode($phpArr); ?>
Walaupun kaedah ini agak mudah untuk dilaksanakan, jika data adalah Apabila menerima sejumlah besar permintaan, pelayan mungkin terlebih beban dan masa tindak balas akan menjadi perlahan.
Kaedah 2: Gunakan borang tersembunyi untuk menghantar
Kaedah lain ialah menggunakan borang HTML untuk menghantar tatasusunan JS. Kaedah khusus adalah untuk menukar tatasusunan JS ke dalam format JSON, dan kemudian memindahkannya dalam bentuk HTML tersembunyi Selepas menerima data JSON di latar belakang, JSON ditukar kepada tatasusunan PHP.
Kod JS adalah seperti berikut:
// 定义JS数组 var jsArr = ['apple', 'banana', 'orange']; // 获取存储JS数组的隐藏表单元素对象 var jsonInput = document.getElementById('json_input'); // 转为JSON格式 var jsonString = JSON.stringify(jsArr); // 将JSON字符串存储到隐藏表单中 jsonInput.value = jsonString; // 提交表单 document.getElementById('submit_form').submit();
Kod PHP adalah seperti berikut:
<?php // 获取隐藏表单传递过来的JSON字符串 $jsArrJson = $_POST['json_input']; // 将JSON字符串转为PHP数组 $phpArr = json_decode($jsArrJson, true); // 进行相应的处理 // ...... ?>
Kaedah ini mudah digunakan, tetapi ia mungkin menyebabkan masalah apabila jumlah data adalah besar. Letakkan sedikit tekanan pada pelayan.
Kaedah 3: Gunakan perpustakaan jQuery untuk membuat permintaan AJAX
Jika anda menggunakan perpustakaan jQuery dalam projek anda, kemudian gunakan perpustakaan jQuery untuk menukar tatasusunan JS menjadi tatasusunan PHP akan Sangat mudah.
Kod JS adalah seperti berikut:
// 定义JS数组 var jsArr = ['apple', 'banana', 'orange']; // 新建AJAX请求 $.ajax({ type: "POST", url: "处理JS数组的PHP页面地址", data: { jsArr: jsArr }, success: function(phpArr) { console.log(phpArr); } });
Kod PHP adalah seperti berikut:
<?php // 获取JS数组 $jsArr = $_POST['jsArr']; // 进行相应的处理 // ...... // 将JS数组转为PHP数组 $phpArr = array(); foreach ($jsArr as $value) { $phpArr[] = $value; } // 返回结果 echo json_encode($phpArr); ?>
Kaedah ini mudah dan mudah digunakan, dan juga boleh disokong menggunakan perpustakaan jQuery Terdapat lebih banyak fungsi AJAX, seperti menggunakan formData untuk muat naik fail, tetapi perlu diingat bahawa menggunakan perpustakaan jQuery mungkin mempunyai sedikit kesan ke atas prestasi dan akan menjadi lebih perlahan.
Kaedah 4: Gunakan fungsi eval dalam PHP untuk penukaran
Terdapat fungsi Eval dalam PHP, yang boleh melaksanakan rentetan sebagai kod PHP. Oleh itu, kita boleh menggunakan fungsi ini untuk melaksanakan kandungan tatasusunan $js sebagai kod PHP asal dan menukar tatasusunan JS kepada tatasusunan PHP.
Kod JS kelihatan seperti ini:
// 定义JS数组 var jsArr = ['apple', 'banana', 'orange']; // 将JS数组转为JSON字符串 var jsonString = JSON.stringify(jsArr); // 拼接执行JS代码的字符串 var evalString = "return " + jsonString + ";"; // 在PHP页面中执行JS代码 $.ajax({ url: "处理JS数组的PHP页面地址?eval=" + encodeURIComponent(evalString), success: function(phpArr) { console.log(phpArr); } });
Kod PHP kelihatan seperti ini:
<?php // 获取JS数组 $jsArr = eval($_REQUEST['eval']); // 将JS数组转为PHP数组 $phpArr = array(); foreach ($jsArr as $value) { $phpArr[] = $value; } // 返回结果 echo json_encode($phpArr); ?>
Walaupun kaedah ini menulis kod yang sangat sedikit, ia menggunakan Eval fungsi Terdapat risiko tertentu dalam cara melaksanakan kod JS Jika rentetan yang dimasukkan dalam fungsi eval tidak dikawal, ia boleh menyebabkan risiko keselamatan.
Ringkasan
Mengikut keperluan dan persekitaran pembangunan yang berbeza, perkara di atas memperkenalkan empat kaedah untuk menukar tatasusunan JS kepada tatasusunan PHP. Setiap kaedah mempunyai kelebihan dan kekurangannya sendiri, seperti yang ditunjukkan di bawah:
Oleh itu, dalam pembangunan sebenar, perlu memilih kaedah yang sesuai mengikut keperluan tertentu.
Atas ialah kandungan terperinci Bagaimana untuk menukar tatasusunan js kepada tatasusunan php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!