问题通过Javascript传回PHP变量并返回

时间:2015-09-11 12:34:12

标签: javascript php variables

所以这个功能似乎让我感到困惑。

    echo"
<td style='font-size:12px;width:150px;'><div style=\"overflow-y:auto; max-height:250px; width:200px;\">
{$row['Notes']} </div><br /><center><br />

    <button onclick=\"myFunction('{$row['ID']}','$rowID')\">Add Note</button>



<form action=\"http://calls.fantomworks.com/functions/notes.php\" id='notesForm' name='notesForm' method='post'>
    <input type='hidden' id='notesID' name='notesID' />
    <input type='hidden' id='rowID' name='rowID'/>
    <input type='hidden' id='notes' name='notes' />
    </form>


</center>";

调用此javascript

<script language="JavaScript" type="text/javascript">
    function myFunction(ID,rowID) 
    {
        var x;
        var ID = ID;
        var rowID = rowID;
        var note = prompt("Customer Note","Write your customer note here...");

        if (note != null) {
            document.getElementById("notes").value = note;
            document.getElementById("notesID").value = ID;
            document.getElementById("rowID").value = rowID;
            document.getElementById("notesForm").submit();
        } 
    else{
       return false;
        }
    }
</script>

并最终在这个php页面

$notesID = $_POST['notesID'];
$rowID = $_POST['rowID'];
$note = $_POST['notes'];
//Redirect to browser
header("Location: ./index.php#row_$rowID");

唯一的问题是rowID似乎没有通过并生成像“index.php#row _”这样的链接

我无法理解为什么rowID没有通过,但NotesID和注释是。 从调试中可以看出,值就在那里。 enter image description here

感谢您的任何想法或建议!!

1 个答案:

答案 0 :(得分:2)

"http://calls.fantomworks.com/index.php"上的脚本正在由您的javascript函数发布 - 因此您寻找的变量应该通过$_POST全局可用。

尝试更改

header("Location: ./index.php#row_$rowID");

header("Location: ./index.php#row_{$_POST['rowID']}");

顺便提一下,你在javascript函数中定义的三个变量似乎是多余的,可以通过外观来消除,即: -

var x;
var ID = ID;
var rowID = rowID;

自发布原始文件后仔细查看(并且没有注意到@OP发布的vars的分配) - 页面上有数百个表单 - 从行到行使用相同的IDS。恕我直言 - 这绝对不是前进的方式 - 当您通过单击按钮动态设置值时,您可以只有一个“添加注释”表单。看起来相关的变量(rowID等)似乎被设置并分配给调用javascript的按钮,所以理论上你可以只有一个用于发布到“notes.php”的表单,但每行都有这个按钮。

就一般批评/建议而言

页面加载速度很慢 - 部分原因是存在数百个复杂的表格行布局,而且每个按钮的形状都是表格 - 然后有些图像本身就是全尺寸但可能真的是(并且应该是)缩略图。如果每个按钮动态分配上述问题中的变量,那么表单的数量可以大大减少。