2014-12-16 2 views
0

저는 아약스를 통해 데이터를 보내고 있습니다. 코드가 작동하지만 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 컨텍스트와 페이지 컨텍스트간에 데이터를 전달하는 유일한 방법은 인수와 반환 값을 사용하는 것입니다. 외부에서 정의 된 변수는 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

좋아, 내가 감사 할거야, 토니, 실제로 이것이 내 첫 번째 대답은 stackoverflow입니다 지적 해 주셔서 고마워요. –