首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用ajax在while循环中捕获变量?

如何使用ajax在while循环中捕获变量?
EN

Stack Overflow用户
提问于 2013-08-06 23:38:54
回答 3查看 1.8K关注 0票数 0

我有一个循环来回答类似这样的问题:

代码语言:javascript
运行
复制
<?php
while ($u=mysql_fetch_array($result)){
?>     
<table>
 <tr>
     <td>Question_ID</td>
     <td>Question</td>
     <td>Answer</td>
 </tr>
 <tr>
     <td><? echo $u['question_id'];?></td>
     <td><? echo $u['question'];?></td> 
     <td> 
         <form>
         <input type="hidden" value="echo $u['question_id'];?>" />
         <input type="text"/>
         <a href="#" onClick="ajax_answer();">Send Answer</a>
         </form>
     </td>
 </tr>
</table>
<?php
} 
?>  

例如,如果用户回答了出现在页面上的第三个问题,我的问题是如何捕获编写的文本和question_id,以便将这些变量发送到php页面?

代码语言:javascript
运行
复制
<script>
   function ajax_answer(){
       $.ajax({
       question_id = ??? //how do I capture this variable?
       answer = ??? //how do I capture this variable?
       url:'answers.php',
       type:'POST',
       dataType:'text/html',
       data:'question_id='+question_id + '&answer='+answer,
       success: function(){
                          };
             });
       };
</script>

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-07 00:08:38

如果你想用纯javascript做这件事,

然后将thisajax_answer事件中传递给您的ajax_answer函数,如下所示

代码语言:javascript
运行
复制
<?php
  while( $u = mysql_fetch_array( $result ) ) {
?> 
  <tr>
    <td><?php echo $u['question_id'];?></td>
    <td><?php echo $u['question'];?></td> 
    <td>
      <input type="hidden" value="<?php echo $u['question_id'];?>" />
      <input type="text" />
      <a href="#" onclick="ajax_answer( this );">Send Answer</a>
    </td>
  </tr>
<?php
  }
?>

你的javascript会是..。

代码语言:javascript
运行
复制
<script type="text/javascript">
  function ajax_answer( elem ) {
    var question_id = elem.parentElement.children[0].value;
    var answer      = elem.parentElement.children[1].value;

    /// do your request here

    return false;
  }
</script>

jQuery也是如此。

向这些输入元素添加name属性,并向anchor元素添加一个classname

代码语言:javascript
运行
复制
<?php
  while( $u = mysql_fetch_array( $result ) ) {
?> 
  <tr>
    <td><?php echo $u['question_id'];?></td>
    <td><?php echo $u['question'];?></td> 
    <td>
      <input type="hidden" name="question_id" value="<?php echo $u['question_id'];?>" />
      <input type="text" name="answer" />
      <a href="#" class="send_answer">Send Answer</a>
    </td>
  </tr>
<?php
  }
?>

Javascript

动态添加onclick事件处理程序。现在您的函数ajax_answer接受两个参数question_idanswer,我们将通过click事件处理程序传递这两个参数。

代码语言:javascript
运行
复制
<script type="text/javascript">
  $(function() {
    $("a.send_answer").on("click", function( event ) {
      event.preventDefault();
      var td  = $(this).parents("td:first");
      var qid = $("input[name=question_id]", td).val();
      var ans = $("input[name=answer]", td).val();

      ajax_answer( qid, ans );
    });
  });
  function ajax_answer( question_id, answer ) {
    /// do your request here
  }
</script>
票数 0
EN

Stack Overflow用户

发布于 2013-08-06 23:49:42

你不能给他们身份证。我会给标签一个带有前缀的id,以便您可以使用相同的id来获取相关的输入值:

代码语言:javascript
运行
复制
<a href="#" id="q<php echo $u['question_id'];?>" // note that I added a "q" prefix

那么您应该可以通过jQuery获得这样的信息:

代码语言:javascript
运行
复制
var theid = $(this).attr('id'); // this being the a tag that was clicked

// then just strip off the leading "q" and you have your id.
var thehiddenid = theid.replace('q', '');
票数 1
EN

Stack Overflow用户

发布于 2013-08-06 23:42:44

您可以更改表单并添加id以便于选择:

代码语言:javascript
运行
复制
     <form>
     <input type="hidden" value="<?php echo $u['question_id'];?>" id="question_id" />
     <input type="text"/>
     <a href="#" onClick="ajax_answer();">Send Answer</a>
     </form>

然后得到如下的值:

代码语言:javascript
运行
复制
  question_id = $("#question_id").val();

或者,如果您的表单只有一个用于question_id的隐藏字段:

代码语言:javascript
运行
复制
question_id = $("input[type=hidden]").val();

注意:请考虑使用<?php标签而不是短标签<?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18092304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档