我想使用ajax將表單提交到另一個域上的遠程服務器(PHP服務器)。雖然我聽說過使用jsonp作爲數據類型,但我不確定如何使用它完全像如何從PHP服務器返回jsonp數據。有人能爲我提供這方面的幫助嗎? 如果可以,請指定我應該如何編寫用於返回jsonp的PHP腳本。如何在jquery mobile中執行表單數據的跨域發佈?
0
A
回答
1
我已經通過使用jsonp解決了跨域ajax請求。我可以通過GET而不是POST來提交表單,所以它取決於您希望表單數據的安全性。這是我如何做的:
PHP服務器代碼:
header('Access-Control-Allow-Origin: *');
header('content-type: application/json; charset=utf-8');
$first_name = $_GET['first-name'];
$last_name = $_GET['last-name'];
// Process the first-name and last-name here, like storing them in a database or something like that.
$data = array('response' => "success");
echo $_GET['jsonp_callback'].'('.json_encode($data).')';
客戶端AJAX代碼:
function init(){
//allowing cross domain requests :
$.mobile.allowCrossDomainPages = true;
$.support.cors = true;
$.ajax({
type:"GET",
url:"http://xyz.com/process.php",
cache:false,
data:formData,
crossDomain: true,
dataType:'jsonp',
jsonp:'jsonp_callback',
success:function(data){
if(data.response=="success"){
alert("success");
},
error:function(){
alert('Sorry, unable to register! Try again.');
}
});
}
0
下面是一個簡單的設置:
<?php
$var1 = $_POST['var1'];
// repeat mapping form post vars to local php vars
// code to do something with vars such as INSERT to database goes here
// select information or build up hard-coded response
// set header for response
header('content-type: application/json; charset=utf-8');
// setup response object
$data = array('resposne' => 'succcess', 'formId' => 5);
// return json object
echo json_encode($data);
?>
然後你的jQuery可能是這樣的:
$.ajax({
url: 'data.php',
data: $('#yourForm').serialize(),
success: doSomethingWithResult
});
function doSomethingWithResponse(result) {
alert(result.response); // should alert "success"
}
如果這不起作用,有很多其他更具體的例子在網絡上。我發現這是一個很好的閱讀:http://www.geekality.net/2010/06/27/php-how-to-easily-provide-json-and-jsonp/
相關問題
- 1. asp.net跨域表單發佈:解析發佈數據
- 2. 跨域IE發送表單數據
- 3. JSONP數據未定義,跨域發佈
- 4. 使用角度跨過域名發佈表單數據
- 5. 發佈表單數據Jquery
- 6. 在PhoneGap中發佈跨數據域的數據
- 7. ASP.Net中的跨域發佈失去了表單域
- 8. 將PHP用於跨域發佈數據
- 9. jQuery Mobile App跨域問題
- 10. 在Chrome中使用iframe目標的跨域表單發佈
- 11. 表單問題使用JQuery跨域發佈到MVC控制器
- 12. Mobile changePage發佈數據
- 13. PhoneGap/JQuery Mobile表單數據
- 14. 發送json數據跨域與jquery-ajax
- 15. 跨域發佈iframe
- 16. 執行window.close()在發佈表單數據後
- 17. jQuery跨網域發佈到rails網站
- 18. 如何發佈跨域數據並使用php和jquery獲得響應
- 19. 在javascript中發佈二進制數據跨域
- 20. 如何在Opera Mini和Opera Mobile中發佈HTML表單?
- 21. jQuery將表單數據發佈到PHP
- 22. php/jquery:發佈表單數據
- 23. 用jQuery發佈表單數據
- 24. JQuery Mobile - 如何處理第二頁中的表單數據?
- 25. 在XPage中發佈跨域REST服務
- 26. 如何從textarea表單發佈數據?
- 27. 如何從android發佈表單數據?
- 28. 使用easyXDM跨域發佈
- 29. 跨域發佈到Sinatra
- 30. 在iOS中發佈表單數據
我對你的回答試了一下,表單數據被公佈在PHP服務器,但ajax響應進入錯誤功能。當我用jsonp嘗試它時,它會禁用ajax響應,並且它不會對服務器執行POST請求,因此會將空行插入到數據庫中。請幫我解決這個問題。 – jigargm
你將不得不發佈一些你的代碼,以幫助我做進一步的工作。你能否至少用你所做的Ajax調用來更新你的問題?那麼如果可能的話,你用來返回json的PHP代碼? – shanabus
謝謝你的關注,我已經解決了這個問題,你可以看看我的答案。 – jigargm