2013-08-04 80 views
0

我正在使用航班搜索api。我的問題是在我的形式,如果我發送表單字段的AJAX文件將序列化數據附加到網址

var data = $('form').serialize(); 

有沒有在我的AJAX文件的方式來追加發送到我的API URL連載()的字符串。現在我的AJAX文件看起來像這樣,雖然它的工作原理,它是非常混亂和代碼需要重構:

require('lib/Unirest.php'); 

if(isset($_POST['departureAirport'])){ 
    $customerSessionId = $_POST['customerSessionId']; 
    $departureAirport = $_POST['departureAirport']; 
    $destinationAirport = $_POST['destinationAirport']; 
    $departureDate = $_POST['departureDate']; 
    $returnDate = $_POST['returnDate']; 
    $adults = $_POST['adults']; 





$getdata = Unirest::get("http://test.api.theapidomain.com/airticket/v1/list.aspx?cid=N7Y5C1&customerSessionId=".$customerSessionId."&departureAirport=".$departureAirport."&destinationAirport=".$destinationAirport."&departureDate=".$departureDate."&returnDate=".$returnDate."&adults=".$adults."", array("Accept" => "application/json") 
); 

我真的很希望這樣的事情:

$dataSent = //the serialized data sent 
$getdata = Unirest::get("http://test.api.theapidomain.com/airticket/v1/list.aspx? + $dataSent, array("Accept" => "application/json") 
    ); 

這裏是我的jQuery

<script type="text/javascript"> 
    $('#myform').submit(function(e){ 
     e.preventDefault(); 
     var data = $('form').serialize(); 
     $.ajax({ 
      type: "POST", 
      url: "ajax.php", 
      data: data, 
      success: function(response){ 
      $("#result").html(response); 
      } 
    }); 
}); 
</script> 

回答

1

發送表單數據使用$.post()

$('#myform').submit(function(e){ 
    e.preventDefault(); 
    $.post("ajax.php", {data: $('form').serialize()}, function(response){ 
     $("#result").html(response); 
    }); 
}); 

PHP字符串

的Javascript

$('#myform').submit(function(e){ 
    e.preventDefault(); 
    $.ajax({ 
     type: "POST", 
     url: "ajax.php", 
     data: {data: $('form').serialize()}, 
     success: function(response){ 
      $("#result").html(response); 
     } 
}); 

或簡化

$dataSent = isset($_POST['data']) ? $_POST['data'] : NULL 
$getdata = Unirest::get("http://test.api.theapidomain.com/airticket/v1/list.aspx?" . $dataSent, array("Accept" => "application/json")); 
+0

Koalo哇,第一行是如此凝結,我不知道發生了什麼事......我想我是新的。這將如何融入我的jQuery以上? – DSmith

+0

@smitty該部分不會出現在您的ajax文件中,而是出現在您撥打電話的JavaScript代碼中,唯一的區別是不是將數據參數作爲序列化字符串發送,而是將數據作爲字符串發送給對象,那麼你如何用你的javascript代碼更新你的問題,這樣我就可以指出你需要如何改變它 –

+0

現在更新...對不起太多小時...我想我需要休息一下。 – DSmith

0
$dataSent = file_get_contents('php://input'); 

$getdata = Unirest::get("http://test.api.theapidomain.com/airticket/v1/list.aspx?".$dataSent, array("Accept" => "application/json") 
    ); 

但它不是安全

+0

Rowman有一個安全的方法來做到這一點? – DSmith

+0

是的。你已經把它寫在你的問題文章中。 –