0

在一个 JQuery 对话框中,我向用户展示了他们可以访问的数据库中的帖子列表。这来自第一个 PHP 脚本。用户选择一个帖子并通过第二个 PHP 脚本在数据库中执行操作。这项工作的一部分,但我无法将要处理的数组发布到第二个 PHP 脚本,该脚本使用数组数据执行查询。

该序列以 jQuery ajax POST 开始。Firebug 控制台在 POST 中向我显示正确的数据,并将它们列为数组元素,例如 field[] abc、field[] xyz 等。第一个 PHP,editPost.php,接收一个有效的字符串,第二个是数组作为

$propertyFields = array();
$propertyFields = $_POST[ 'propertyFields' ];

在第一个脚本的查询使用字符串而不是数组完成后,while 循环构造选择项列表,并填充一个可以工作的 JavaScript 函数 -sort of。它提供了列表描述,但不能包含 propertyFields 数组 - 这应该是第二个 PHP 脚本。

while($row = mysql_fetch_array($fetch)) {
    $activeCount = mysql_real_escape_string($row["activeCount"]);
    $error_NumberOfActives = "<ul>Welcome back.
    <br>Click the 'Edit this one' button that you want to edit or change.
    <script type='text/javascript'>var properTFields=[]; //added array declaration,but no fix
    function retrievePost( idx, propertyID, properTFields ) {
//retrieve database content for clicked post and changes text message inside the button 
    alert( properTFields + '|in editPost' ); //test - get - function Array() {[native code]}|in editPost
    jQuery.ajax({
        url: '../phpFunctions/editPostUpdate.php',  
        data:{  properTID: propertyID, //POSTs OK
                propertyFields: properTFields //propertyFields is empty in POST to editPostUpdate.php                          },                                   
        type:'POST',                                       
        success: function (data) {
            if (data ) {
            //button reads 'can now be changed' from editPostUpdate.php with forced success from editPostUpdate.php.
                document.getElementById(idx).innerHTML = propertyID + ' can now be changed';
            //alert(data); //get forced success message from editPostUpdate.php
            } else {
            document.getElementById(idx).innerHTML = propertyID + ' has errors,check,try again';
            }

        }
    });
    }</script></ul>";
//some messages are constructed in PHP objects - nothing to do with this problem
    //make HTML list items of active postings for 3Step countries
    $idMaker = "active" . $rowCount;
    //this syntax is exceptionally picky. It took advice from gurus and hours of trials to get it. It works with the retrievePost function above.
    //test - $propertyFields was added as a function variable. It doesn't work. 
    $error_ListActives = "<li> $propertyID, $storedStreetAddress, $storedCity3
    <button type='button' id='$idMaker' onclick='retrievePost( id, $propertyID, $propertyFields )'>Edit this one</button>
    </li>"; 

请注意,在列表项中,propertyID、storedStreetAddress 和 storedCity3 的变量都有效并显示在从其上方的 retrievePost 函数注入的 HTML 中。它只是 $propertyFields 数组不起作用。在 POST 数据中,Firebug 控制台为properTID 显示一个字符串,为propertyFields 数组显示一个空字段。

当用户通过按钮进行选择时,我希望将 propertyFields 数组发布到第二个 PHP 脚本 editPostUpdate.php,如图所示,其中数据数组将在查询中使用。这个 POST 发生了,但它是一个空数组。我已经尝试了很多东西,包括原始的javascript数组作为连接到数据的元素:propertyFields:没有成功。应该做什么?

4

1 回答 1

0

问题根源的线索在于“填充一个有效的javascript函数 - 有点。它提供列表描述,但不能包含propertyFields数组”那么数组有什么问题?我花了很长时间,但我发现在这种情况下,Javascript 无法理解字符串数组。我错误地认为字符串会更简单。当我将properTFields 数组更改为JSON 时,使用 json_encode() 命令 - 砰 - 如上所述,代码在第一次尝试时工作。故事的寓意:将 JSON 与 Javascript 结合使用。

于 2013-09-11T18:01:50.000 回答