CasperJS POST AJAX无效

时间:2014-12-16 07:40:06

标签: javascript ajax casperjs

我正致力于通过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

2 个答案:

答案 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);
}

?>