它在textarea中显示'[Object] [object]'

时间:2012-06-01 16:57:29

标签: php javascript jquery ajax

我有一个应用程序here,我想在textarea中添加一个“问题”但不是在textarea中显示“问题”,而是在textarea中显示“[Object] [object]” ,我怎样才能让它显示选择进入测试区的问题?

要使用该应用程序,请按以下步骤操作:

  1. 当您打开应用程序时,单击绿色加号按钮,这将打开一个模态窗口。
  2. 您将在模态窗口中看到一个搜索栏,在搜索栏中输入“AAA”并点击“搜索”
  3. 您会看到搜索结果。单击其中一行旁边的“添加”按钮,我想要的是要在textarea中显示的“问题”字段行中的内容。目前显示“[对象] [对象]”。
  4. 以下是代码:

    <head>
    <script type="text/javascript">
    
    var plusbutton_clicked;
    
    function plusbutton() { 
        // Display an external page using an iframe 
        var src = "previousquestions.php"; 
        $.modal('<iframe src="' + src + '" style="border:0;width:100%;height:100%;">');
        return false;
    } 
    
    
    function closewindow() {     
    
        $.modal.close(); 
        return false;
    } 
    
    $('.plusimage').live('click', function() {
        plusbutton($(this));
    });
    
    
    function plusbutton(plus_id) {
        // Set global info
        plusbutton_clicked = plus_id;
        // Display an external page using an iframe
        var src = "previousquestions.php";
        $.modal('<iframe src="' + src + '" style="border:0;width:100%;height:100%;">');
        return false;
    }
    
    
    function addwindow(questionText) { 
    
        if(window.console) console.log();
            var txt = $(this).val(questionText);
    
        if($(plusbutton_clicked).attr('id')=='mainPlusbutton') { 
            $('#mainTextarea').val(txt);
            }
    
        $.modal.close(); 
        return false;
    } 
    
    
    </script>
    
    </head>
    
    <body>
    
    <form id="QandA" action="<?php echo htmlentities($action); ?>" method="post">
    
    <div id="detailsBlock">
    <table id="question">
    <tr>
        <td rowspan="3">Question:</td> 
        <td rowspan="3">
            <textarea class="questionTextArea" id="mainTextarea" rows="5" cols="40" name="questionText"></textarea>
        </td>
    </tr>
    </table>
    
    <table id="plus" align="center">
    <tr>
    <th>
    <a onclick="return plusbutton();">
    <img src="Images/plussign.jpg" width="30" height="30" alt="Look Up Previous Question" class="plusimage" id="mainPlusbutton" name="plusbuttonrow"/>
    </a>
    <span id="plussignmsg">(Click Plus Sign to look <br/> up Previous Questions)</span>
    </th>
    </tr>
    </table>
    
    </div>
    <hr/>
    
    </form>
    
    </body> 
    

    以下是在搜索结果中输出“问题”字段的代码:

    <?php 
    
    $output = ""; 
    
            while ($questionrow = mysql_fetch_assoc($questionresult)) { 
    $output .= " 
    <table> 
          <tr> 
          <td class='addtd'><button type='button' class='add' onclick='parent.addwindow();'>Add</button></td> 
          </tr>"; 
            } 
            $output .= "        </table>"; 
    
            echo $output; 
    
            ?>  
    

2 个答案:

答案 0 :(得分:1)

您的addwindow函数正在尝试将mainTextarea的值设置为jQuery对象,而不是字符串。评论内联。

function addwindow(questionText) {

    // this line tries to set the `value` property of window to questionText, which makes no sense
    var txt = $(this).val(questionText);

    // also, that line returns the jQuery object (because of chaining), so `txt` is now a jQuery object holding the window object        

    if($(plusbutton_clicked).attr('id')=='mainPlusbutton') {
        $('#mainTextarea').val(txt);  // txt is the jQuery object, stringified to [object Object]
    }
    ....
}

var txt = $(this).val(questionText);没有任何意义,因为它设置 this(当前是window对象)的值并设置{{1一个jQuery对象。也许你的意思是txt?由于所有的全局变量和不规则的缩进,我对你的代码非常困难。

答案 1 :(得分:0)

当你打电话给parent.addWindow()时,你没有传递一个参数而且函数需要一个。

var txt = $(this).val(questionText);txt设置为$(this)

这就是打印[object object]的原因。

编辑:修复了不良信息。

编辑:根据评论添加到下面

function addwindow(questionText) { 
    if(window.console) console.log();
    var txt = $(this).val(questionText);
    if($(plusbutton_clicked).attr('id')=='mainPlusbutton') { 
        $('#mainTextarea').val(txt);
    }
    $.modal.close(); 
    return false;
}

应该是:

function addwindow(questionText) { 
    if(window.console) console.log();
    if($(plusbutton_clicked).attr('id')=='mainPlusbutton') { 
        $('#mainTextarea').val(questionText);
    }
    $.modal.close(); 
    return false;
}

<?php 
$output = ""; 
while ($questionrow = mysql_fetch_assoc($questionresult)) { 
    $output .= " 
    <table> 
        <tr> 
            <td class='addtd'><button type='button' class='add' onclick='parent.addwindow();'>Add</button></td> 
        </tr>"; 
} 
$output .= "        </table>"; 
echo $output; 
?>

应该是:

<?php
$output = "";
while ($questionrow = mysql_fetch_assoc($questionresult)) {
    $output .= '
    <table>
        <tr>
            <td class="addtd"><button type="button" class="add" onclick="parent.addwindow(\''.$questionrow['text'].'\');">Add</button></td>
        </tr>';
}
$output .= "        </table>";
echo $output;
?>