在多个页面上POST数据

时间:2013-02-08 20:18:35

标签: php javascript jquery ajax

我想在多个页面上发布表单中的数据,但主要操作仍应为“”。 所以在我点击之后,它应该刷新在同一页面上,但POST数据也会转到另一个.php。我需要这个,因为在另一个.php文件中,创建了一个嵌入到原始表单页面的图形。

我尝试过使用隐藏字段。我也可以做graph.php?var1=3&var2=3等等,但我不想那样显示它。

我对javascript不太熟悉,但我觉得这样就好了?

2 个答案:

答案 0 :(得分:1)

是的,听起来你应该做一个jQuery .ajax调用或使用XMLHTTPRequest。发布到您需要的URL,并在获得结果后重新加载页面。

var i = 0
var pages = 3
var fd = new FormData();    
fd.append( 'value1', $('form input').val() );
fd.append( 'value2', $('form textarea').val() );

$.ajax({
  url: 'http://example.com/page1.php',
  data: fd,
  processData: false,
  contentType: false,
  type: 'POST',
  success: function(data){
    i++;
    captureFunction();
  }
});

$.ajax({
  url: 'http://example.com/page2.php',
  data: fd,
  processData: false,
  contentType: false,
  type: 'POST',
  success: function(data){
    i++;
    captureFunction();
  }
});

$.ajax({
  url: 'http://example.com/page3.php',
  data: fd,
  processData: false,
  contentType: false,
  type: 'POST',
  success: function(data){
    i++;
    captureFunction();
  }
});

var captureFunction = function() {
  if(i != pages) return;
  location.reload()
}

我认为这不会开箱即用,但对于你开始攻击来说将是一个很好的起点。

答案 1 :(得分:0)

由于您使用的是PHP

在页面重新加载时将POST请求卷曲到每个所需页面。

e.g。

class Asynchronous {

    public function add($url, $params)
    {
        foreach ($params as $key => &$val) {
          if (is_array($val)) $val = implode(',', $val);
            $post_params[] = $key.'='.urlencode($val);
        }
        $post_string = implode('&', $post_params);

        $parts=parse_url($url);

        $fp = fsockopen($parts['host'], 
            isset($parts['port'])?$parts['port']:80, 
            $errno, $errstr, 30);

        $out = "POST ".$parts['path']." HTTP/1.1\r\n";
        $out.= "Host: ".$parts['host']."\r\n";
        $out.= "Content-Type: application/x-www-form-urlencoded\r\n";
        $out.= "Content-Length: ".strlen($post_string)."\r\n";
        $out.= "Connection: Close\r\n\r\n";
        if (isset($post_string)) $out.= $post_string;

        fwrite($fp, $out);
        fclose($fp);
    }
}