ajax-将javascript值保存到php

ajax-将javascript值保存到php,javascript,php,ajax,variables,Javascript,Php,Ajax,Variables,经过几个小时的努力,我想问你:) 所以我有一个php页面,可以显示来自服务器的文件。现在我可以编辑了 这些文件带有编辑器插件。 Textarea是编辑器渲染的标记。 为了从编辑器中保存更改后的文本,我有一个按钮,可以使用javascript从文本周围的pre标记中获取innerHTML。 现在我想通过ajax将该变量传递给get.php站点上的一个php变量, 因此,我可以将其保存在本地并发送到服务器 问题是,如果我点击“保存”按钮,根本没有反应。我在这里测试了许多类似ajax函数的答案,但没有

经过几个小时的努力,我想问你:)

所以我有一个php页面,可以显示来自服务器的文件。现在我可以编辑了 这些文件带有编辑器插件。 Textarea是编辑器渲染的标记。 为了从编辑器中保存更改后的文本,我有一个按钮,可以使用javascript从文本周围的pre标记中获取innerHTML。 现在我想通过ajax将该变量传递给get.php站点上的一个php变量, 因此,我可以将其保存在本地并发送到服务器

问题是,如果我点击“保存”按钮,根本没有反应。我在这里测试了许多类似ajax函数的答案,但没有一个给我一个反应:/

php主机

<script  src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>


...


echo  "<textarea><pre id='textbox'> ";
echo $ssh->exec($display);
echo "</textarea></pre>";

echo '<input type="button" value="Save File" id="butt">';

echo "<script>
var show = document.getElementById('textbox').innerHTML;
$(document).ready(function() {
$('#butt').click(function() {

$.ajax({
    type: 'POST',
    url: 'get.php',
    data: {'variable': show},
    success: function(data){
        alert(data);
}
});
});
});
</script>";


...
编辑:

这是实际工作状态:

echo  "<textarea id='textbox'><pre> ";
echo $ssh->exec($display);
echo "</pre></textarea>";

echo '<input type="button" value="Save File" id="butt">';

echo "<script>
$(document).ready(function() {
$('#butt').click(function() {
var show = document.getElementById('textbox').value;

$.ajax({
type: 'POST',
url: 'get.php',
data: {'variable': show},
success: function(data){
    alert(data);
},
});
});
});
</script>";
echo”“;
echo$ssh->exec($display);
回声“;
回声';
回声“
$(文档).ready(函数(){
$('#butt')。单击(函数(){
var show=document.getElementById('textbox')。值;
$.ajax({
键入:“POST”,
url:'get.php',
数据:{'variable':show},
成功:功能(数据){
警报(数据);
},
});
});
});
";
这样做应该可以:


我建议做一些小的改变,看看是否一切都正常运行

    • 我可以看到pre标记在textarea关闭标记后面-尝试更改它
    • 尝试放置
      var show=document.getElementById('textbox').innerHTML在、、butt“函数的内部
    • 然后我可以在这里看到您的问题数据:
      {'variable':'show')},
      -您正在以字符串形式发送'show'-删除引号以将其作为变量发送,该变量将在PHP站点中显示为POST值

  • 数据:{'variable':show)}
    部分中有错误。它应该是:
    数据:{variable:show}
    。您也应该使用Firebug或Firefox开发者工具解决此类问题。更容易看出问题所在。

    您可以在设备工具的“网络”选项卡中确认post请求正在发生吗?如果是,状态代码是什么?顺便提一下,您发送的是字符串
    “show”
    ,而不是的内容de>show
    在您的post数据中显示变量。如果我单击按钮,则不会显示请求事件。“开发人员工具”当然应该是,而不是“设备工具”“.好的,所以请求根本没有发生。。。控制台中是否有可能提供线索的消息?因为在我看来,绑定看起来很好……顺便说一句#2:获取文本区域的内容应该发生在click事件处理程序内部,否则在加载页面开始时(可能只是空的)您将始终获取文本区域的内容。Thx,我做了所有事情,但仍然没有做出任何反应。:/可能是ajax不喜欢echo'd吗?将警报(show)放在butt函数中以显示show变量的内容。。。这是一个很好的测试。。。下一件事是-右键点击页面。。。检查元素-并转到控制台选项卡-页面上有Javascript触发的事件-可能有一些错误或警告(“任何”),因为如果变量的内容为空,根据浏览器的不同,警报消息可能根本不会显示。它只会显示:未捕获的语法错误:意外标记(当我在编辑器中的第行显示文本文件时:data:{(variable:show)},确定我正在运行此命令:echo“$(document).ready(function(){$('#butt')。单击(function()){var show=document.getElementById('textbox').innerHTML;alert('anything');});”,上面写着:未捕获类型错误:无法读取nullFirebug的属性'innerHTML'不再开发,在最新的Firefox版本中存在重大问题。因此,任何浏览器OP使用的默认开发工具都应该可以:)
    echo  "<textarea id='textbox'><pre> ";
    echo $ssh->exec($display);
    echo "</pre></textarea>";
    
    echo '<input type="button" value="Save File" id="butt">';
    
    echo "<script>
    $(document).ready(function() {
    $('#butt').click(function() {
    var show = document.getElementById('textbox').value;
    
    $.ajax({
    type: 'POST',
    url: 'get.php',
    data: {'variable': show},
    success: function(data){
        alert(data);
    },
    });
    });
    });
    </script>";
    
    $.ajax({
        type: 'POST',
        url: 'get.php',
        data: {variable: show)},
        success: function (data){
            alert(data);