2016-05-26 3 views
0

Sorry, ein Neuling zu PHP, ich versuche, eine Curl-Formular einreichen, aber die Ergebnisse nach dem ersten einreichen wollen. Diese zeigen dann Schaltflächen an und abhängig davon, welche Schaltfläche angeklickt wird, zeigt ein anderes Senden die zweiten Werte in einem Popup an. Es übergibt die Werte korrekt an das Popup, aber ich möchte nicht, dass der Bildschirm aktualisiert wird, wenn auf das zweite Senden geklickt wird.PHP curl nicht nach dem Formular aktualisieren oder in Sitzung zu halten, oder xmlhttprequest

Alle Zeiger

<?php session_start(); 
?> 

<html> 
<head> 

    <title>PHP Test</title> 

</head> 
<body> 

<SCRIPT TYPE="text/javascript"> 

    function popup(mylink, windowname) 
    { 
    if (! window.focus)return true; 
    var href; 
    if (typeof(mylink) == 'string') 
    href=mylink; 
    else 
    href=mylink.href; 
    window.open(href, windowname, 'width=700,height=235,scrollbars=yes'); 
    return false; 
    } 

    </SCRIPT> 

    <form action="index.php" method="post"> 

    CHECK DOMAIN: 
    <input type="text" input name="checkDomain" value="<?php echo isset($_POST['checkDomain']) ? $_POST['checkDomain'] : '' ?>"/> 
    <button type="submit" value="Submit">Check</button> 

<?php 

$DomainArray = array("ie","com","net"); 

//IF WE WANT TO PARSE XML RESPONSE 
function produce_XML_object_tree($raw_XML) { 
    libxml_use_internal_errors(true); 
    try { 
     $xmlTree = new SimpleXMLElement($raw_XML); 
    } catch (Exception $e) { 
     // Something went wrong. 
     $error_message = 'SimpleXMLElement threw an exception.'; 
     foreach(libxml_get_errors() as $error_line) { 
      $error_message .= "\t" . $error_line->message; 
     } 
     trigger_error($error_message); 
     return false; 
    } 

    return $xmlTree; 
} 
if(!empty($_POST)) {}{ 


if(!empty($_POST["checkDomain"])) { 
$checkDomain = $_POST["checkDomain"]; 

if(!empty($_POST["form2-submit"])) { 
$whoIs = $_POST['form2-submit']; 
} 

if ($checkDomain !=null || $whoIs !=null) 
{ 
    //Check if a TLD has been entered 
    if (strpos($checkDomain, '.') !== FALSE) 
    { 

     $domain = substr($checkDomain, 0, strpos($checkDomain, ".")); 
     $DomainList = substr($checkDomain, strpos($checkDomain, ".")+1); 


     $url = 'check1'; 

    } 

else if (!empty($_POST['form2-submit'])) { 
$WhoisDomain = $DomainArray[$whoIs-1]; 
    $url = 'check2'; 
    } 

else{ 
    echo ' Checking all domains:'; 
     $DomainList = implode(",",$DomainArray); 
     $url = 'check3'; 

    } 
} 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$xml = curl_exec($ch); 
curl_close($ch); 


$cont = produce_XML_object_tree($xml); 
} 

$_SESSION["otherXML"] =$xml; 

    foreach($cont->Domain as $domain){ 
     print '<br/>'.(string)$domain; 

    } 


$index = 0; 
    foreach($cont->RRPText as $rRPText){ 
    $index++; 
     print '<br/>'.(string)$rRPText; 
     //echo 'index'.$index; 
     if ($rRPText == "Domain not available") 
     { 

     print ' <button type="submit" name="form2-submit" onclick="popup(\'popup.php\')" value="'.$index.'">whois </button> '; 

     } 

    } 
} 

?> 
    </form> 


</body> 
</html> 
+0

Wenn Sie nicht wollen, eine „* Bildschirmaktualisierung *“ auf senden, die Sie in die Herstellung eines [Asynchronous Request] suchen müssen (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests) – Marcus

+0

Danke, ich habe versucht, async HTTP-Anfrage zu tun, kann es nicht zur Arbeit bringen – Brian

Antwort

0

geschätzt, wenn Sie die Seite aktualisiert werden nicht möchten, sollten Sie einen AJAX Anruf.

Um das Leben einfacher zu machen, könnten Sie jQuery's POST verwenden.

0

Ich habe versucht, httpRequest async zu verwenden, aber es gibt nichts zurückgegeben? API sagt Rückkehr kann Text, HTML oder XML sein. Ich habe sie alle ausprobiert.

<SCRIPT TYPE="text/javascript"> 

function httpGetAsync() 
    { 
    var xmlHttp = new XMLHttpRequest(); 
     xmlHttp.open("GET", "URL....", true); 
     xmlHttp.send(null); 
alert(xmlHttp); 
alert(xmlHttp.responseText); 
    return xmlHttp.responseText; 
} 
    </SCRIPT> 
Verwandte Themen