我实际上将PHP脚本用于广告网络,但发布者将使用的代码是同步的。 现在,我希望脚本将加载异步。
我是否需要更改所有PHP / Javascript代码? 或者有一个技巧(javascript库...)
感谢您的帮助!
答案 0 :(得分:1)
同步/异步取决于客户端。除非非常特别的例外。
所以专注于Javascript代码:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests
修改强> 示例:将文件发送到控制台日志
这是异步XMLHttpRequest的最简单用法。
var request = new XMLHttpRequest();
request.open('GET', 'http://...', false/*ASYNCHRONOUS=false, it is SYNCHRONOUS)*/
request.send(null);
/*anything else is stopped around, one thread working only:request*/
/*once it is done, the next line is executed. This is:*/
if (request.status === 200) {
console.log(request.responseText);
}
相反,这是同步:
{{1}}
因此,在JS代码中完成JS Sync方法并为另一个代码更改一个。
答案 1 :(得分:1)
我不完全确定,但我认为jQuery Ajax调用是你想要的。 http://api.jquery.com/jquery.ajax/
以下是ajax调用示例:
ImageView chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.battery_20);
final Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new AccelerateInterpolator());
fadeOut.setStartOffset(50);
fadeOut.setDuration(3000);
fadeOut.setAnimationListener(new Animation.AnimationListener()
{
public void onAnimationEnd(Animation animation)
{
chatHead.setVisibility(View.GONE);
}
public void onAnimationRepeat(Animation animation) {}
public void onAnimationStart(Animation animation) {}
});
chatHead.setAnimation(fadeOut);
chatHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
chatHead.setVisibility(View.INVISIBLE);
}
});
此外,由于PHP总是返回字符串,为了成功,您只需使用:
$.ajax({
url: formURL,
type: "POST",
data: postData,
beforeSend: function() {
//this code always run Ususaly UI changes
},
success: function(data, textStatus, jqXHR) {
//var result = JSON.parse(data);
},
error: function(jqXHR, textStatus, errorThrown) {
//if ajax fails
},
complete: function(response) {
// this code always run Ususaly UI changes
}
});
如果你想返回一个数组,你应该:
"echo $string;"
对于错误部分,最好强制PHP返回错误,例如:
"echo json_encode($array);"