2014-12-16 3 views
0

Я работаю над отправкой данных через ajax. Код работает, но запрос AJAX не работает. Переданные данные не сохраняются.CasperJS POST 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 

ответ

1

Я не полностью понимаю ваш вопрос, но код-накрест вам нужно явно передавать переменные в контекст страницы. casper.evaluate изолирован песочницей, и единственный способ передать данные между контекстом и контекстом страницы использует аргументы и возвращаемое значение. Переменные, определенные снаружи, не могут использоваться внутри 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); 
+0

Он работает .. Ты гений. – Kang

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

?> 
+0

Эта работа для меня :) –

+0

объяснение того, что вы сделали и почему оно работает, со ссылками для дальнейшего чтения, если нужно, дает хороший ответ –

+1

ОК, я буду, спасибо Toni, на самом деле это мой первый ответ на stackoverflow , спасибо за указание. –

Смежные вопросы