-1

可能重复:
Jquery 帖子,新窗口中的响应

我在名为 results.php 的页面中有一个表格 html,它看起来像 GenID ENSMUSG00000098791 ENSMUSG00000023441 ENSMUSG00000047431

results.php 有这个功能

<script>

function contenidoCelda() 
  {
  var table= $('#tabla_results');
  cells = $('td');
 for (var i=0,len=cells.length; i<len; i++)
   {
    cells[i].onclick = function()
      {
      var formData2 = new FormData(document.getElementById("formulario"));
      formData2.append("gen_id",(this.innerHTML));
      $.ajax({
          type: "POST",
      url: "test.php",
      data: formData2,
      cache: false,
      processData: false, 
      contentType: false, 
      success: function(data)
      {
        alert(data);       
            window.open('test.php', '_blank');

      }
    });

       }
     }
   }

</script>

我想使用我在 test.php 文件中发送的数据,而不是将其返回给 results.php,在 test.php 中使用,以动态生成内容。

这是 test.php

<?php
$data = $_POST['gen_id'];
system("mkdir $data");
echo "Hola";
echo $data;
echo '<xmp>';var_dump($data);echo '</xmp>';
?>

<html>
  <link href="css/ui-lightness/jquery-ui-1.9.1.custom.css" rel="stylesheet">
  <script src="js/jquery-1.8.2.js"></script>
  <script src="js/jquery-ui-1.9.1.custom.js"></script>
<body>
<form>

<p id = "testing"> Test page </p>

<?php if($data == "ENSMUSG00000047751") {echo "Good";} else {echo "Bad";}   ?>

</form>
</body>

所以在test.php中,它必须显示Good,如果我点击表格中的那个genid但它显示Bad,并返回Good给results.php

我创建目录的测试,我点击的 genid 工作正常

我应该做什么?

4

2 回答 2

1

在您的 $.ajax 调用中,尝试设置:

$.ajax({
  type: "POST",
  url: "test.php",
  data: "testing123",
  cache: false,
  processData: false, 
  contentType: false, 
});

并查看是否创建了 dir test123 并回显。

如果不是,那么问题出在这两行,特别是您对 var formData2 的定义:

var formData2 = new FormData($('#formulario')[0]);
formData2.append("gen_id",(this.innerHTML));

检查输入错误,例如逗号代替分号:

var table = document.getElementById('tabla_results'),  <-- THIS IS A COMMA. TYPO?
cells = table.getElementsByTagName('td');

此外,您还混合了 jQuery 和 javascript。为什么不对 jQuery 进行标准化?例如,上面的两行代码在 jQuery 中会这样写:

var table = $('#tabla_results');
cells = $('td');

少打字,是吗?

另外,我确定你有,但你确定你已经包含了一个指向 jQuery 库的链接吗?如:

<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
于 2012-11-22T20:30:53.177 回答
0

我认为问题在于您定义的方式formData2

var formData2 = new FormData($('#formulario')[0]);

导致formData2实际上不是 FormData。

尝试将其切换为:

var formData2 = new FormData(document.getElementById("formulario"));

这应该可以解决数据问题。

编辑:关于你的问题的编辑,如果你想将结果发布到另一个页面,真的不需要使用 ajax。只需在表单提交上使用 javascript 添加带有 ID 的附加字段(如果您不能像隐藏字段一样添加它......)并使用普通表单提交。

于 2012-11-22T20:32:25.887 回答