1

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

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

我对javascript不太熟悉,但我觉得那是要走的路?

4

2 回答 2

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()
}

我认为这不会开箱即用,但会是您开始 hack 的一个很好的起点。

于 2013-02-08T20:26:41.433 回答
0

由于您正在使用PHP

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

例如

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);
    }
}
于 2013-02-08T20:44:45.693 回答