我试图在 CasperJS
函数中使用 jQuery
调用本地服务器上的 PHP 脚本
,但不知何故我不这样做得到结果。这是我的代码:
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":{}}
我检查过的事情:
- XAMP 服务器正在运行并工作
- PHP 文件在那里
- 任何其他网址也不起作用并提供结果(见上文)
- jQuery 函数
$.load()
也不起作用(结果为“null”) - jQuery 已正确加载(否则 CasperJS 会抛出错误)
- 如果我只是返回它就可以正常工作(例如
返回“test”;
)
不知道该怎么办。感谢您的任何建议!
最佳答案
我建议将 $.ajaxSetup(); 中的 async 更改为 false
而且,您应该从回调成功函数中获取返回数据
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需要指出的是,您的页面将“挂起”直到请求完成
关于javascript - 无法使用 jQuery 从 PHP 脚本获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17278448/