我试图在我的本地服务器上使用PHP script
jQuery
函数调用CasperJS
,但不知何故我没有得到结果。这是我的代码:
casper.then(function() {
var result = casper.evaluate(function() {
var result = $.get('http://localhost/test.php', function() {});
return result;
});
result = JSON.stringify(result);
this.echo(result);
this.exit();
});
调用哪个URL无关紧要,它总能提供相同的结果:
{"abort":{},"always":{},"complete":{},"done":{},"error":null,"fail":{},"getAllRe
sponseHeaders":{},"getResponseHeader":{},"overrideMimeType":{},"pipe":null,"prog
ress":{},"promise":{},"readyState":1,"setRequestHeader":{},"state":{},"statusCod
e":{},"success":null,"then":{}}
我检查过的事情:
$.load()
也不起作用(结果是“null”)return "test";
)不知道该怎么做。谢谢你的任何建议!
答案 0 :(得分:1)
$.get
是异步的,其结果将无法使用
调用回调。
casper.then(function() {
var _this = this;
casper.evaluate(function() {
$.get('http://localhost/test.php', function(result) {
_this.echo(result);
_this.exit();
});
});
});
答案 1 :(得分:1)
我建议您在$.ajaxSetup();
此外,您应该从回调成功函数
中获取返回数据casper.then(function() {
var result = casper.evaluate(function() {
var $return = ''; // initiate $return
var async = $.ajaxSetup()['async'];
$.ajaxSetup({'async':false}); // Set async to false
$.get('http://localhost/test.php', function( data ) {
$return = data; // test.php return data is saved to $return
});
$.ajaxSetup({'async': async }); // Set async to back to original value
});
result = JSON.stringify($return);
this.echo(result);
this.exit();
});
由于 Esailija指出了这一点,唯一的缺点是,在请求完成之前,您的网页会“挂起”
答案 2 :(得分:0)
$ .get()的jQuery文档中没有任何内容确实$ .get()返回页面的内容。您正在使用http传输实例。