AJAX / LocalStorage:是否可以将JS变量传递给PHP?
发布时间:2020-12-16 02:49:29 所属栏目:百科 来源:网络整理
导读:我想知道,什么是存放购物车的最佳方式? 我考虑过将产品ID存储在localstorage / sessionstorage中,然后使用 AJAX从服务器中检索产品. 唯一的问题是我不知道如何将项目从localstorage传递给 PHP … 我猜它可能不是直接的,我想到了一个表格虽然我不知道如何实
我想知道,什么是存放购物车的最佳方式?
我考虑过将产品ID存储在localstorage / sessionstorage中,然后使用 AJAX从服务器中检索产品. 唯一的问题是我不知道如何将项目从localstorage传递给 PHP … 我猜它可能不是直接的,我想到了一个表格虽然我不知道如何实现它… 这个想法是,当用户点击“添加到购物车”时,项目ID和数量被添加到localstorage,当用户查看他的购物车时,项目详细信息(图像,名称,价格……)正在从数据库. 我可能会使用本教程 ?? http://verido.dk/index.php/ressourcer/artikler/loading-and-saving-data-dynamically-using-php-jquery-and-mysql/ 我还可以放弃本地存储并使用会话和数据库,但我真的很想给用户提供动态的网络体验. 我想出的另一种可能的方法是使用像file.php?prodid = ……这样的URL,尽管这样的URL可能会太长. 提前致谢! 解决方法
‘你必须记住,在将代码转换为浏览器端代码之前,会读取服务器端(PHP)代码. JavaScript被操纵浏览器端…
所以一维地说,你不能将JavaScript传递给PHP. 然而… 使用Ajax,在我的情况下,我建议您使用JSON将JavaScript数据发送到PHP页面并将响应带回JavaScript方法.我认为这符合您的需求.如果你愿意,我可以提供一个简单的例子. // – 以下示例: JavaScript的: //Ajax Method function processAjax(queryString,processDiv,responseDiv) { responseDiv.innerHTML = ''; var myAjax; try { // Modern Browsers--> myAjax =new XMLHttpRequest(); } catch (e) { // antique ie browsers--> try { myAjax =new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try{ myAjax =new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { // Something went wrong document.getElementById('processDiv').innerHTML=""; alert("Your browser malfunctioned! Please try again. Consider installing a modern browser if the problem persists."); return false; } } } myAjax.onreadystatechange = function() { if (myAjax.readyState == 4) { var ajaxResponse = myAjax.responseText; responseDiv.innerHTML = ajaxResponse; processDiv.innerHTML = ""; //NOTE: HERE IS WHERE AJAX IS FINISHED,SO IF YOU WANT TO DO SOMETHING ELSE HERE YOU CAN! //POST PROCESSING-----> // IE: alert('I am finished processing now!'); // or call another function: // anotherFunction(); } else { processDiv.innerHTML = '<img src="http://www.mysite.com/images/loadingicon.gif" alt="processing....." />'; } } myAjax.open("GET",queryString,true); myAjax.send(null); } function sendStorage() { var helloVar = 'Hello,I am passed to PHP #1'; var worldVar = 'I am the second value passed to PHP!'; var processId = 'process_div'; var resultId = 'result_div'; var queryString = 'http://www.mysite.com/process.php?hello=' + helloVar + '&world=' + worldVar; processAjax(queryString,processId,resultId); } 现在对于一些HTML: <div id="content"> <div id="process_div"> This is where processing will occur </div> <div id="result_div"> This is where my response will display </div> </div> 现在为process.php(注意:为安全起见,我强烈建议您不要在您的JAVASCRIPT中显示服务器端处理页面) <?php //init $hello = ''; $world = ''; $errors = 0; //set //Security note: never trust a URL request.. you should clean all $_GET,$_REQUEST,AND $_POST with the PHP htmlspecialchars() method (take a look at php.net for that) (isset($_GET['hello'])) ? $hello = $_GET['hello'] : $errors++; (isset($_GET['world'])) ? $world = $_GET['world'] : $errors++; //process if($errors > 0) { echo 'Errors Detected! Missing querystring get data!'; } else { echo '<p>Hello received: ' . $hello . '</p>'; echo '<p>World received: ' . $world . '</p>'; //now we can process $hello and $world server side! } ?> 重要提示:您应该学习一些JSON和$_POST请求,因为它们更安全,更快,您可以轻松地操作返回的数据.我建议查看像jquery这样的库来简化示例. 我没有测试过这段代码,但它应该可以工作..如果您有疑问或者这不能回答您的问题,请告诉我. 乐意效劳! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |