這是我的javascript代碼:jQuery的AJAX異步沒有開展相應的工作
function getData(param1,param2) {
$.ajaxSetup({async:false});
var request = $.ajax({
url: "http://someurl.com/xyz.php?p1="+param1+"&p2="+param2,
type: "POST",
async: false,
success: function(imageurl){
return imageurl;
}
});
}
,這裏是在PHP頁面,我調用這個函數:現在
<html>
<head>
<script src="jquery-1.9.1.js"></script>
<script src="http://myjsdomain.com/myjs.js"></script>
<script>
function callMyFunction(box) {
alert(box);
box.value = "Waiting....";
var data = getData('param1', 'param2');
box.value = data;
alert(data); //here I am getting "Undefined"
}
</script>
</head>
<body>
<?=$_SERVER["REMOTE_ADDR"]?><br />
<input type="button" onclick="callMyFunction(this)" value="Click Here" />
</body>
</html>
當我打電話這個getData()
函數在我的php頁面,然後返回"Undefined"
。
當我使用JavaScript代碼提醒數據時,它會提示正確的值,但在PHP頁面中仍會提示"undefined"
。
這是一個Ajax ASYNC問題,但即使設置它false
,我仍然面臨這個問題。
我用螢火蟲調試它,我可以看到URL(從我從哪裏得到的數據使用Ajax)返回正確的值,但它沒有在PHP頁上接收我調用此函數。
任何建議,以使這項工作
因爲您在URL中傳遞數據,所以將'POST'更改爲'GET'。 – Jack
從文檔 - 從jQuery 1.8開始,不贊成使用帶有jqXHR($ .Deferred)的async:false;您必須使用成功/錯誤/完整回調選項,而不是jqXHR對象的相應方法,例如jqXHR.done()或已棄用的jqXHR.success()。 –
@JayBlanchard你可以使用done來提供代碼嗎? – Despicable