将数据发送到新窗口并在那里使用

时间:2012-11-22 20:04:31

标签: php html post

  

可能重复:
  Jquery post, response in new window

我在一个名为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中使用,以生成dinamycally内容。

这是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中,如果我点击表中的genid,它必须显示Good 但它显示Bad,并返回Good到results.php

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

我必须做什么?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

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

导致formData2实际上不是FormData。

尝试将其切换为:

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

这应解决数据问题。

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