使用PHP处理Jquery Post

时间:2013-02-21 11:13:13

标签: php jquery forms

我已经在这里工作了好几个小时,而且我完全失去了......我已经尽力了但是问题是我对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正确接收它?谢谢!

2 个答案:

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

答案 1 :(得分: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)是表单本身。