我正致力于通过ajax发送数据。代码正常,但AJAX请求无效。发送的数据不会保存。
我尝试使用webSecurityEnabled: false
,但它仍然无效。
这就是我尝试这样做的方式:
var casper = require("casper").create({
logLevel: "error", //debug
verbose: true,
pageSettings: {
loadImages: true, // do not load images
loadPlugins: false, // do not load NPAPI plugins (Flash, Silverlight, ...)
webSecurityEnabled: false // ajax
}
});
........................
var save_file="http://aaa.com/js_save.php";
for(var ii=0; ii<title_link.length; ii++)
{
this.echo(title_link[ii]);
//var save_data = tlink.serialize();
var save_data = {"title":"title", "link":title_link[ii]};
jsonObject_fields = this.evaluate(function(save_file) {
params = save_data;
try {
return JSON.parse(__utils__.sendAJAX(save_file, 'POST', params, false));
} catch (e) {
console.log("Error in fetching json object");
}
}, {save_file : save_file});
try{
//require("utils").dump(JSON.stringify(jsonObject_fields.name));
}
catch(e)
{
console.log("Error is: "+e);
}
} // for
答案 0 :(得分:1)
我不完全理解您的问题,但在代码方面,您需要将变量显式传递到页面上下文中。 casper.evaluate
是沙箱,在casper上下文和页面上下文之间传递数据的唯一方法是使用参数和返回值。外部定义的变量不能在casper.evaluate
内使用。
您需要将save_data
明确传递给页面上下文:
var save_data = {"title":"title", "link":title_link[ii]};
jsonObject_fields = this.evaluate(function(save_file, save_data) {
try {
return JSON.parse(__utils__.sendAJAX(save_file, 'POST', save_data, false));
} catch (e) {
console.log("Error in fetching json object");
}
}, save_file, save_data);
答案 1 :(得分:0)
casper.then(function () {
var wsurl = "http://siddimaniaajax.esy.es/ajaxCall.php";
var params = {name:"siddhartha"};
var jsonObject_fields = casper.evaluate(function(wsurl, params) {
try {
return JSON.parse(__utils__.sendAJAX(wsurl, 'POST', params, false));
} catch (e) {
console.log("Error in fetching json object");
}
}, wsurl, params);
console.log(JSON.stringify(jsonObject_fields));
});
<?php
if(isset($_POST['name']) && !empty($_POST['name']))
{
$arr = array('name' => $_POST['name']);
echo json_encode($arr);
}
?>