2014-04-07 80 views
0

链接到一个网页,并触发AJAX我试图让一个div按钮触发AJAX和链接到的Ajax是发布数据的页面。我有ajax在点击工作,但似乎无法让链接工作,所有我试图让链接工作的方式什么也不做。通过相同的按钮

我有一个div按钮:

<div class="cman shadow1" id="search_button" value="carSearch"/> 
    Start Search 
</div> 

触发:

function carSearch() 
{ 
    $.ajax({ 
     type: "POST", 
     url: 'searchpost.php', 
     data: 
     { 
      mpg : $('.mpg').val() 
     }, 
     success: function(data) 
     { 
      alert("success! "+$('.mpg').val()); 
     } 
    }); 
} 

编辑:

觉得我应该提到,我希望链接的页面是大气压:

<?php 
session_start(); 

$conn = mysql_connect('localhost', 'root', ''); 
mysql_select_db('cdb', $conn); 

if(isset($_POST['mpg'])) 
{ 
    $mpg = (int)($_POST["mpg"]);   

header("Location: home.php"); 
exit; 
} 
?> 

我的Wi sh使用它来收集用户输入的所有搜索字段,然后加载搜索结果页面。上面的代码仅用于测试。

我提到这是因为用户@Doge建议在ajax的成功处理程序中执行document.location.href =“searchpost.php”,这确实会导致页面发生更改,但页面未运行isset和重定向,所以js变量没有发布,或者它是,但这个页面的实例并没有得到它。

的isset和重定向做的工作与使用XHR网络选项卡我的网页上的页面是重定向到出现。

+1

你不能重定向和同时发送ajax请求。你必须先等待ajax请求完成“发送”部分。 (为什么你的div有一个href属性?一个值属性?一个类型属性?) –

+1

如果你重定向,而ajax请求仍在加载请求将被取消。在您的ajax调用的成功处理程序中重定向。 ('document.location.href =“searchpost.php”')。请注意,这将是一个GET请求。 – Halcyon

+0

div作为类型按钮?它将无法使用输入类型=“提交”或

回答

1

如果你必须通过JS做到这一点,然后创建一个隐藏的形式,填充它,并提交:

HTML:

<form method="post" id="hiddenform" action="searchpost.php"> 
    <input type="hidden" name="mpg" id="mpg"/> 
</form> 

JS:

function carSearch() 
{ 
    $('#mpg').val(yourjsvariable); 
    $('#hiddenform').submit(); 
} 
+0

我不明白这是如何帮助我的。我没有通过选择通过js做这个,我发布的变量是从jQuery我没有其他方式获得这些变量到PHP中使用除了与ajax的MySQL。我只想让一个按钮将jquery值发布到我同时链接到的页面,以便我可以实际使用这些变量。 – Vereonix

+0

@Tom这正是这样做 - 它把js变量(在我的例子中称为'yourjsvariable')以不可视的形式隐藏到隐藏字段中,然后提交表单,它将同时发布数据和重定向 - 完全是你要求。如果您有更多问题,请发表评论。 – Steve

+0

ooooh,对不起,我很累,对js来说还是一个新的东西。所以我会摆脱我目前的ajax,并让我的按钮调用你所做的功能?隐藏的表单是否需要进入按钮div,或者不要紧,因为它是通过id绑定到js的。 – Vereonix