0

我已经在这几个小时了,我完全不知所措....我已经尽我所能,但问题是我对 Jquery 不是很熟悉,这是我第一次曾经使用过它.... 基本上,我试图将表单数据传递给 php 脚本,然后返回一个包含网页源代码的变量。

这是jQuery:

 $("button").click(function(){
hi = $("#domain").serialize();
var page;
    $.ajax({
    type: "POST",
    url: "webcrawler.php",
    data: hi,
    //dataType: "text",
    success: function(data){
    page = data;
    document.write(page);
    }
  });

  });

这是它引用的html:

      <div id="contact_form">
      <form name="contact" action="">
      <fieldset>
      <label for="domain" id="domain_label">Name</label>  
      <input type="text" name="domain" id="domain" size="30" value="" class="text-input" />


      <input type="submit" name="submit" class="button" id="submit_btn" value="Send" />
      </fieldset>
      </form>
      </div>

这是处理它的PHP:

      $search = $_POST["domain"];

      if(!$fp = fopen($search,"r" )) {

      return false;

      } 

      fopen($search,"r" );
      $data = "";



      while(!feof($fp)) { 

      $data .= fgets($fp, 1024);

      }

      fclose($fp); 

  return $data;

      ?>

我认为变量 $search 是空白的,但那是因为我没有用 jquery 正确发送它或用 php 正确接收它吗?谢谢!

4

2 回答 2

2

那么,当您使用 jQuery 序列化表单数据时,您应该序列化<form>,而不是<input>字段。

所以试试这个:

$("button").click(function() {
    var formData = $('form[name="contact"]').serialize();
    var page;

    $.ajax({
        type: "POST",
        url: "webcrawler.php",
        data: formData,
        success: function(data) {
            page = data;
            document.write(page);
        }
    });
});
于 2013-02-21T11:20:04.487 回答
1

看到你必须做几件事:

$("form[id='contact_form']").submit(function (e) {//<---instead click submit form
    e.preventDefault(); //<----------------you have to stop the submit for ajax
    Data = $(this).serialize(); //<----------$(this) is form here to serialize
    var page;
    $.ajax({
       type: "POST",
       url: "webcrawler.php",
       data: Data,
       success: function (data) {
          page = data;
          document.write(page);
       }
   });

});

就像在评论中一样:

  1. Submit form反而button click
  2. Stop the form submission否则页面将被刷新。
  3. $(this).serialize()在这里序列化表单,因为这里$(this)是表单本身。
于 2013-02-21T11:50:17.063 回答