2014-01-30 87 views
0

我有这样的场景:

    在我的index.html
  • 一个文本框的格式,并用POST方法和行动另一个名为页面middlescan.html
  • middlescan.html按钮在body onload事件中调用一个名为checkpost的js函数
  • 将js函数放入midlescan.html中,该函数必须检查$ _post变量是否设置为空或非空,如果是,则返回index.html

我的问题是: 如何在javascript中检查是否有$ _POST调用?

我现在的情况:

  1. 在我的index.html:

    <form id="form1" name="form1" method="post" action="middlescan.html"> 
    <p> 
    <label for="oStxt"></label> 
    </p> 
    <table width="60%" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
    <td width="6%">&nbsp;</td> 
    <td width="17%"><input type="text" name="oStxt" id="oStxt" /></td> 
    <td width="77%"><input type="submit" name="button" id="button" value="Invia" /></td> 
    </tr> 
    </table> 
    </form> 
    
  2. 在middlescan.html

    <body onload = ckpost()> 
    

3.in JS文件

function ckpost() { 

// only continue if we have a valid xmlHttp object 
if (xmlHttp) 
{ 
// try to connect to the server 
try 
{ 
    // initiate reading the async.txt file from the serve 

    xmlHttp.open(“POST", "php/check.php", true); 
    xmlHttp.onreadystatechange = handleRequestStateChange; 
    xmlHttp.send(null); 
    // change cursor to "busy" hourglass icon 


} 
// display the error in case of failure 
catch (e) 
{ 
    alert("Can't connect to server:\n" + e.toString()); 
} 
} 
} 
  1. 在我checkpost.php

    <?php 
    $datat = array(); 
    
    if(!is_null($_POST['oStxt']) || $_POST['oStxt'] != "") { 
    

    $ datat [urlpost] = $ _POST [ 'oStxt'];

    } else { 
    

    $ datat [urlpost] =“nullo”;

    } 
    

    //克里奥IL文件JSON 回声json_encode($ datat);

    ?> 
    

,但反应是有史以来 “nullo” 有什么不对?

在此先感谢

+12

只能通过AJAX。 JavaScript是***客户端***脚本。 '$ _POST'是PHP的一部分,它是***服务器端***脚本。 – War10ck

回答

1

$_POST是服务器端的变量不是JavaScript的访问!

如果你想在发送前检查变量在窗体POST编辑:

<form action="some_url" onSubmit="if (this.input_name.value == ''|| this.input_name.value==' ') { alert('empty value found'); return false;}"> 

如果要检测是否Ajax调用制成:

$(document).bind("ajaxSend", function(){ 
     alert('ajax was used!'); 
    }); 
0

相反,你可以检查每表单元素如果它们被设置,或者不在客户端本身,如果它只是检查表单元素是否填充或空。

像:

if(document.getElementById("form_element1")) { 
    alert('Value set'); 
} 

否则,你必须创建一个PHP文件的桥,所以你可以通过AJAX调用该文件。

2

您将不得不在php中进行检查或使用一些ajax调用某些php脚本,因为除了通过ajax调用,javascript无法访问后端脚本语言。

如果您需要特定的js代码,你可以做在PHP以下是基于一些PHP变量

<?php 
    if(isset($_POST['somevar']) && $_POST['somevar']=="Some Value") { 
    echo <<<END 
    <script> 
     $(document).ready(function(){ 
      //do something here. 
     }); 
    </script> 
END; 
    } 
?> 

或者有一个js文件加载

<?php 
    if(isset($_POST['somevar']) && $_POST['somevar']=="Some Value") { 
    echo <<<END 
    <script type="text/javascript" src="/someJSFile.js"></script> 
END; 
    } 
?> 

但需要注意的JavaScript将执行没有运行,直到浏览器加载页面,并没有在php中执行。

+0

谢谢。我的问题是我的程序中已经有ajax调用。之前,我有一个单一的HTML页面onload事件称为ajax函数与DOM和JavaScript在新页面生成。现在我不得不在2个html页面中分割这个过程,首先用表单POST传递第二个页面的文本框数据和第二个页面调用ajax函数,然后构建页面 – AleMal

+0

@almal然后让脚本指出,那个ajax调用使输出数据让你知道你需要知道的post变量的状态。否则做另一个Ajax调用来做到这一点,你可以有多个Ajax调用。 –

+0

好的,但在我的第二页,我调用像ckpost()这样的函数和js文件上的这个函数做了一个xmlhttp调用,像xmlHttp.open(“POST”,“php/ckpost.php,true);? – AleMal