2013-09-25 3 views
1

У меня есть index.php, который вызывает url.php при нажатии кнопки с ajax для загрузки без перезагрузки страницы. Теперь на 'url.php' есть еще одна кнопка, которая вызывает data.php через ajax.Вложенный вызов ajax в multple php page

Прямо сейчас, что происходит: при открытии index.php сначала и нажмите кнопку на index.php нагрузка url.php без загрузки страницы. но когда я нажимаю кнопку Fire me на url.php перенаправляет к data.php

Если непосредственно открыть url.php то он выполняет действие Ajax и загружает data.php без перезагрузки страницы.

Что я должен изменить здесь, чтобы: Когда я открываю сначала index.php и нажимаю кнопку на нем, он загружает url.php без перезагрузки страницы (это уже происходит, prblem со следующим шагом). После этого, когда я нажимаю кнопку «url.php», он должен загрузить data.php без загрузки страницы.

index.php:

<?php 
    session_start(); 
    $appId  = '178812862'; 
    $appSecret = '390c044f268aca44'; // Facebook App Secret 
    $return_url = 'dev01.dev/FB/facebook-php-sdk/examples/'; //path to script folder 
    ?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head> 
    <script type="text/javascript" src="https://www.google.com/jsapi"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"> 

    </script> 
     <title>ThenWat</title> 

     function AjaxResponse() 
    { 
     //alert("2"); 
     var mydata;   
     CallAfterLogin(mydata, function(send) { 
        }); 
     } 
    function LodingAnimate() //Show loading Image 
    { 
     //alert("animate4");  
     // $("#LoginButton").hide(); //hide login button once user authorize the application 
    } 

     </script> 

    <script type="text/javascript"> 
       //------------------script 2 starts --------- 
       function showUser(form, e) { 
       e.preventDefault(); 
       e.returnValue=false; 
       var xmlhttp; 
       var sent = form.elements['sent'].value; 

       if (window.XMLHttpRequest) { 
        xmlhttp=new XMLHttpRequest(); 
       } else { 
        // code for IE6, IE5 
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
       xmlhttp.onreadystatechange = function(e) { 
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
         document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 
        } 
       } 
       xmlhttp.open(form.method, form.action, true); 
       xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
       xmlhttp.send('sent=' + sent); 

       return false; 
       } 

      </script> 


    </head> 
    <body style="height: 560px"> 
    <?php 
    if (!isset($_SESSION['logged_in'])) { 
    ?> 

     <div style="z-index: 1; left: 538px; top: 290px; position: absolute;"> 
     <input class="uibutton confirm large" type="submit" value="Connect with facebook" onclick="AjaxResponse()" > 
     </div> 
     <?php 
    } 
    ?> 


    <div id="fb-root"></div> 
    <script type="text/javascript"> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId: '<?php 
    echo $appId; 
    ?>', 
     cookie: true, 
     xfbml: true, 
    // channelUrl: '<?php 
    echo $return_url; 
    ?>channel.php', 
     oauth: true});}; 
    (function() { 
      //alert("1"); 
     var e = document.createElement('script'); 
     e.async = true; 
     e.src = document.location.protocol +'//connect.facebook.net/en_US/all.js'; 
     document.getElementById('fb-root').appendChild(e);}()); 
    function CallAfterLogin(data,callback){ 
      //alert("CallafterLogin3"); 
      FB.login(function(response) { //--- 
      if (response.status === "connected") 
      { 
       LodingAnimate(); 
       FB.api('/me?fields=movies,email', function(mydata) { 
       console.log(mydata.email); 

       //alert("json-5"); 
       var json = JSON.stringify(mydata.movies.data); 
      // alert(mydata.movies); 
       var a = JSON.parse(json);  
       $.post('movies_db.php',{'myd':a}, function(data) 
       { 
        $.ajax({ 
       url:'url.php' 
       ,async:  true 
       ,cache:  false 
       ,dataType: 'html' 
       ,success: function(data){ 
        $('body').html(data); 
         } 
      });   
       }); 
      console.log(data); 

        }); //-- 
      } //if 
       }); //--- 
       } //main function 
    </script> 
    </body> 
    </html> 

url.php

<html> 
    <head> 
     <title>ThenWat</title> 

    <meta content="text/html;charset=utf-8" http-equiv="Content-Type" /> 
    <meta content="utf-8" http-equiv="encoding" /> 
     </head> 
    <body style="height: 560px"> 
     <form action="data.php" method="POST" onsubmit="return showUser(this, event)"> 
      <div style="z-index: 1; left: 470px; top: 100px; position: absolute; margin-top: 0px">    
       <label>Enter URL: <input type="text" value="http://www.paulgraham.com/herd.html" name="sent" style="width: 400px; height:40px;" ></label><br/> 
      </div> 
      <div style="z-index: 1; left: 420px; top: 160px; position: absolute; margin-top: 0px"> <button> Fire me </button>  
      </div> 
     </form> 
     <div style="z-index: 1; left: 660px; top: 160px; position: absolute; margin-top: 0px"> 
      <button onclick="makeAjaxCall(); return false;" value="View Graph" > View Graph </button> 
     </div> 
    <h3> 
     <div id="txtHint" style="z-index: 1; color:green; left: 200px; top: 270px; position: absolute; margin-top: 0px">  </h3> 
     </div> 

    </body> 
</html> 

data.php

<?php 
//sent has value "http://www.paulgraham.com/herd.html" 
$url=$_POST['sent']; 
$doc = new DOMDocument(); 
libxml_use_internal_errors(true); 
$doc->loadHTMLFile($url); 
libxml_clear_errors(); 
$xpath = new DOMXPath($doc); 
foreach($xpath->query("//script") as $script) { 
    $script->parentNode->removeChild($script); 
} 
$textContent = $doc->textContent; //inherited from DOMNode 
$text=escapeshellarg($textContent); 
$test = preg_replace("/[^a-zA-Z]+/", " ", html_entity_decode($text)); 


//-- 
    $flag = 0; 
    if (preg_match_all('/[^=]*=([^;@]*)/', shell_exec("/home/technoworld/Desktop/b '$test'"), $matches)){ //Values stored in ma. 
    $x = (int) $matches[1][0]; //optionally cast to int 
    $y = (int) $matches[1][1]; 
    $p= (100*$x)/($x+$y); 
    $q= (100*$y)/($x+$y); 
    echo "<b>Positive count : $x with $p % </b>"; echo "</br>"; 
    echo "<b>Negative count : $y with $q % </b>"; 

    $con = mysqli_connect('127.0.0.1:3306', 'root', 'root', 'test'); 
    if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$flag=0; 
// $sql = "INSERT INTO interest (movies,id) VALUES('".$Name."','".$ID."')"; 
$sql1 = "INSERT INTO table2 (id,sent,pcount,ncount,flag) VALUES ('".$x."','".$url."','".$x."','".$y."','".$flag."')"; 
if (mysqli_query($con, $sql1)) { 
    // echo "1 record added"; 
} else { 
    die('Error: ' . mysqli_error($con)); 
} 


mysqli_close($con); 



} 

?> 

Нижняя линия: создание системы Ajax/Jquery index.php -> url.php -> data.php. Существующие index.php -> url.php и url.php -> data.php

+0

так что в чем вопрос или проблема? – ihsan

+0

@ihsan: Что мне следует сделать здесь, чтобы: Когда я открываю первый index.php и нажимаю кнопку на нем, он загружает url.php без перезагрузки страницы (это уже происходит, prblem со следующим шагом). После этого, когда я нажимаю кнопку «url.php», он должен загружать data.php без загрузки страницы. –

+0

Пожалуйста, не копируйте большие куски кода в свои файлы, не понимая, что они на самом деле делают. Половина кода, который вы разместили здесь, перечисляется дважды и ничего не делает. – mavrosxristoforos

ответ

1

В url.php у вас есть

<form action="data.php" method="POST" onsubmit="showUser(this, event)"> 

Это, безусловно, вызывает форму, чтобы оставлять сообщения. Вместо того, чтобы написать

<form action="data.php" method="POST" onsubmit="return showUser(this, event);"> 

И добавить

return false; 

в конце функции showUser.

EDIT: После того, как различные изменения в содержание вопроса:

Я заметил, что вы загружаете всю url.php в теле index.php. Тем не менее, у вас есть <html>, <head> и <script> теги в url.php, которые я сомневаюсь, если они вызваны. Вот почему форма просто подчиняется.

Правильный способ: написать ВСЕ ваш Javascript в файле index.php и просто загрузить новую страницу содержимое, загрузив url.php. Я собирался написать пример, но я увидел, что вы обновили свой код вопроса, поэтому я надеюсь, что это прояснилось.

+0

спасибо, но проблема до есть. Хотя я нажимаю кнопку на 'url.php', она загружается и перенаправляется на' data.php' –

+1

Я обновил свой ответ. – mavrosxristoforos

+0

Проблема с кнопкой «Пожар меня». Пожалуйста, проверьте. Он загружает 'data.php' на клик, который является действием, которое я сохранил в' form'. –

1

благодаря @mavrosxristoforos

Суть мне нужно поместить все функции тех, который вызывается на ButtonClick в первый файл, с которого я начал действие, т.е.index.php не в последующих файлах url.php

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