【问题标题】:Load php function after JS function callJS函数调用后加载php函数
【发布时间】:2013-11-07 20:51:18
【问题描述】:

在我的网站中,我必须阅读、编辑和保存一些数据。我是这样执行的:

  1. 使用 PHP 加载一个名为 database.txt 的文本文件(存储在服务器中),该文件位于具有 id="testo" 的文本区域中
  2. 调用importa();,这是一个javascript函数,可以编辑testo中的文本
  3. 我将textarea的内容保存在database.txt

这是我用来在 textarea 中加载文本的代码:

 <?php
$myFile = "database.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
echo '<textarea id="testo" style="width:100%;display:block;">'.$theData.'</textarea>';
?>

我有一个按钮Save 调用importa();

<input type="button" id="salvauser" value="Save" style="width:100%" onclick="document.getElementById('settings').style.display='none';importa();" />

现在我有了从 importa 编辑的文本区域,我必须将其文本保存到 database.txt。我写了这个函数:

<?php
$testo = $_POST['testo']."\r\n";
$documento ="database.txt";
$identificatore = fopen($documento, "a");
if (!fwrite($identificatore, $testo)){
echo"?PHP ERROR: Cannot save the file. Script not loaded.";
exit;
}
else {
fclose($identificatore);
header('Location: http://escaperope.altervista.org/testsito/index.php');
}
?>

它保存了textarea的内容,但是我在调​​用importa();之后不知道如何调用这个PHP脚本(我是PHP新手)。你有什么建议吗?

这里可以看到importa();

function addText(elId,text) {
    document.getElementById(elId).value += text;
}

//addText allows me to add the text inside the textarea

function importa() {
 addText("testo",document.getElementById("nome2").value + ":" + document.getElementById("fc2").value+":" + document.getElementById("poke1").value + ":" + document.getElementById("poke2").value + ":" + document.getElementById("poke3").value + "tipo");
}

【问题讨论】:

  • 请记住 PHP 是服务器端,而 javascript 是客户端,所以您可能需要为此使用 ajax,请同时发布 importa() 函数。
  • 完成,我已经添加了函数 importa();
  • 函数 savetext() { jQuery.ajax({ type: "POST",url: "action.php", });
  • 自己试试看!但我会说它缺少一些东西。

标签: javascript php jquery html


【解决方案1】:

html5方式...纯Javascript...

index.html

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
</style>
<script src="rw.js"></script>
</head>
<body>
<textarea id="testo"></textarea>
<button id="salva">Salva</button>
</body>
</html>

rw.js

function x(a,b,e,d,c){ // Url,callback,method,formdata or {key:val},placeholder
 c=new XMLHttpRequest;
 c.open(e||'get',a);
 c.onload=b;
 c.onerror=error;
 c.send(d||null)
}
function salva(){
 var fd=new FormData();
 fd.append('data',document.getElementById('testo').value);
 x('save.php',controllo,'post',fd);
}
function controllo(){
 if(this.response=='ok'){
  alert(this.response);//ok
  leggi();
 }else{
  alert(this.response);//errore
 }
}
function leggi(){
 x('database.txt',visualizza);
}
function visualizza(){
 document.getElementById('testo').value=this.response;
}
window.onload=function(){
 document.getElementById('salva').addEventListener('click',salva,false);
 leggi();
}

ajax 源https://stackoverflow.com/a/18309057/2450730

之后你可以执行 addtext 或任何你想要的。

保存.php

<?php
if($_POST['data']){
 $fh=fopen('database.txt','w') or die("non riesco ad aprire il file");
 echo (fwrite($fh,$_POST['data']))?'ok':'errore';
 fclose($fh);
}
?>

未经测试...但应该可以在现代浏览器中使用...

如果你想更好地控制你的数据库.. 使用 JSON.parse() & JSON.stringify();

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

如果您有任何其他问题,请随时提出。

编辑

我现在注意到你想在 db.txt 中存储你的用户和戳或任何东西......

以 json 方式构建所有内容.. :

[
 {
  "nome":"pippo",
  "pokes":[
   {"time":05505151,"poketxt":"lol","type":"msg"},
   {"time":05505152,"poketxt":"lol2","type":"boh"}
  ]
 },
 {
  "nome":"ciccio",
  "pokes":[
   {"time":05505155,"poketxt":"lolx","type":"msg"},
   {"time":05505156,"poketxt":"lolxx","type":"boh2"}
  ]
 },
]

这很容易通过创建一个 javascript 数组来完成...

然后将其转换为文本字符串以存储到database.txt

salva 函数中使用fd.append('data',JSON.stringify(javascriptArray))

阅读正文

visualizza 函数内部

使用JSON.parse(this.response) 将您的文本转换回一个 javascript 数组,其中包含创建一个漂亮的显示函数所需的所有数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多