我已经在这里工作了好几个小时,而且我完全失去了......我已经尽力了但是问题是我对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正确接收它?谢谢!
答案 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);
}
});
});
所以在评论中:
Submit form
代替button click
Stop the form submission
否则页面会刷新。$(this).serialize()
正在此处序列化表单,因为此处$(this)
是表单本身。