2017-04-05 86 views
-1

所以,我有一个HTML表单,我需要将它的值作为参数发送到PHP函数,但我也需要一个不同的值,甚至不在里面HTML。将2个或更多参数从HTML表单传递到PHP函数

例如:

<form action="methods.php" method="register"> 
    <input type="text" placeholder="EventID"> 
    <input type="submit" value="Register"> 
</form> 

这种形式会得到事件ID并把它作为参数传递给注册用户到事件。但我需要发送用户作为参数(function register($user, $eventid)),我不知道如何这样做。

我在这里找到了一些类似的东西,但它们与POST和GET相关,我不确定它们是否适用于我,我无法理解如何使用它们,因此如果有人可以帮助我出去,pleaaaaaase,我会非常感激

+0

确实使用AJAX。但是,真的,有很多你在互联网上询问的例子。值在老学校表格提交中按名称发送,您不应再使用...再使用AJAX。我所做过的每一次提交涉及POST或GET。 – PHPglue

+0

我无法找到一个我可以理解做什么): 我从来没有使用AJAX,但如果你相信它会工作,我会做一些谷歌搜索,并尝试使用它,谢谢:D –

+0

这有点复杂。您可能想要使用jQuery ...但我会在下面向您展示一个原始示例。等一下。 – PHPglue

回答

0

查找的解释在下面的评论:

//<![CDATA[ 
 
// external.js 
 
var post, doc, bod, htm, C, E, T; // for use on other loads 
 
addEventListener('load', function(){ // load 
 

 
// used in post function below to create String from Object 
 
function phpEncode(obj){ 
 
    var r = []; 
 
    if(obj instanceof Array){ 
 
    for(var i=0,l=obj.length; i<l; i++){ 
 
     r.push(phpEncode(obj[i])); 
 
    } 
 
    return '%5B'+r.join(',')+'%5D'; 
 
    } 
 
    else if(typeof obj === 'object' && obj){ 
 
    for(var i in obj){ 
 
     if(obj.hasOwnProperty(i)){ 
 
     var v = obj[i], s; 
 
     if(typeof v === 'object' && v){ 
 
      s = encodeURIComponent('"'+i.replace('"', '\\"')+'":')+phpEncode(v); 
 
     } 
 
     else{ 
 
      v = typeof v === 'string' ? '"'+v.replace('"', '\"')+'"' : v; 
 
      s = encodeURIComponent('"'+i.replace('"', '\\"')+'":'+v); 
 
     } 
 
     r.push(s); 
 
     } 
 
    } 
 
    return '%7B'+r.join(',')+'%7D'; 
 
    } 
 
    else{ 
 
    r = typeof obj === 'string' ? '"'+obj.replace('"', '\\"')+'"' : obj; 
 
    return ''+r; 
 
    } 
 
} 
 
// used in post function below to evaluate (make into code) JSON String that comes back from PHP 
 
function phpAccept(url){ 
 
    return eval('('+decodeURIComponent(url)+')'); 
 
} 
 
// here is an example of a post AJAX function 
 
post = function(send, where, success, context){ 
 
    var x = new XMLHttpRequest; 
 
    var c = context || this; 
 
    x.open('POST', where); x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
 
    x.onreadystatechange = function(){ 
 
    if(x.readyState === 4 && x.status === 200){ 
 
     if(success)success.call(c, phpAccept(x.responseText)); 
 
    } 
 
    } 
 
    if(typeof send === 'object' && send && !(send instanceof Array)){ 
 
    var r = []; 
 
    for(var p in send){ 
 
     r.push(encodeURIComponent(p)+'='+phpEncode(send[p])); 
 
    } 
 
    x.send(r.join('&')); 
 
    } 
 
    else{ 
 
    throw new Error('send must be an Object'); 
 
    } 
 
    return x; 
 
} 
 
// yes, you can do this - just remember that non-primitive values are the actual Object through assingment 
 
doc = document; bod = doc.body; htm = doc.documentElement; 
 
// simple way to create an Element by tag 
 
C = function(tag){ 
 
    return doc.createElement(tag); 
 
} 
 
// simple way to document.getElementById() 
 
E = function(id){ 
 
    return doc.getElementById(id); 
 
} 
 
T = function(tag){ 
 
    return doc.getElementsByTagName(tag); 
 
} 
 
var form = E('form'), sub = E('sub'), i1 = E('i1'), i2 = E('i2'); 
 
// prevent old school submission 
 
form.addEventListener('submit', function(ev){ 
 
    ev.preventDefault(); // prevents submission 
 
}); 
 
// just for testing remove below 
 
var tS = E('test_out').style; 
 
// remove above 
 
// ajax submisson 
 
sub.addEventListener('click', function(){ 
 
    /* note that if the Elements are not removed from or added 
 
    to the DOM you don't need to get them again Element.value 
 
    will probably be different so you'll want to get them 
 
    on every click 
 
    */ 
 
    post({phpProp1:i1.value, phpProp2:i2.value}, 'yourPHPajaxResponsePage.php', function(data){ 
 
    /* before data comes back yourPHPajaxResponsePage.php may look like this: 
 
    <?php 
 
    session_start(); // super common - read up on it - not needed here - but won't hurt 
 
    if(isset($_POST['phpProp1'], $_POST['phpProp2'])){ 
 
     // usually you affect MySQL using PHP at this point 
 
     // we'll just send them back in this lame example 
 
     $res = array('jsProp1' => $_POST['phpProp1'], 'jsProp2' => $_POST['phpProp2']); 
 
     // makes results come back as JSON 
 
     echo json_encode($res); 
 
    } 
 
    ?> 
 
    */ 
 
    if(data){ // may want more conditions 
 
     E('out').innerHTML = data.jsProp1+'<br />'+data.jsProp2; 
 
    } 
 
    }, this); 
 
    // just for testing - remove below 
 
    tS.display = 'block'; 
 
    E('temp_res').innerHTML = i1.value+'<br />'+i2.value; 
 
    // remove above 
 
}); 
 
// testing only remove below 
 
var ins = doc.querySelectorAll('input[type=text]'); 
 
for(var i=0,l=ins.length; i<l; i++){ 
 
    ins[i].addEventListener('focus', function(){ 
 
    tS.display = 'none'; 
 
    }); 
 
} 
 
// remove above 
 
form.addEventListener('keydown', function(ev){ 
 
    // if user hits enter 
 
    if(ev.keyCode === 13)sub.click(); 
 
}); 
 

 
}); // end load 
 
//]]>
/* external.css */ 
 
html,body{ 
 
    padding:0; margin:0; 
 
} 
 
.main{ 
 
    width:980px; margin:0 auto; 
 
} 
 
#form{ 
 
    width:266px; color:#fff; background:green; padding:10px; 
 
} 
 
#form>div>label{ 
 
    display:block; float:left; width:57px; 
 
} 
 
#form>div>input{ 
 
    width:203px; 
 
} 
 
#form>div{ 
 
    margin-bottom:10px; 
 
} 
 
#form>#sub{ 
 
    display:block; margin:0 auto; 
 
} 
 
/* remove below - testing only */ 
 
#test_out{ 
 
    display:none; 
 
} 
 
#test_out>div:first-child{ 
 
    color:red; 
 
}
<!DOCTYPE html> 
 
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> 
 
    <head> 
 
    <meta http-equiv='content-type' content='text/html;charset=utf-8' /> 
 
    <title>AJAX Example</title> 
 
    <link type='text/css' rel='stylesheet' href='external.css' /> 
 
    <script type='text/javascript' src='external.js'></script> 
 
    </head> 
 
<body> 
 
    <div class='main'> 
 
    <form id='form'> 
 
     <div><label for='i1'>Input 1</label><input id='i1' name='i1' type='text' value='' /></div> 
 
     <div><label for='i2'>Input 2</label><input id='i2' name='i2' type='text' value='' /></div> 
 
     <input id='sub' type='button' value='submit' /> 
 
    </form> 
 
    <div id='out'></div> 
 
    <!-- for testing remove below --> 
 
    <div id='test_out'><div>Must have PHPServer code in JavaScript Comments to get real results</div><div id='temp_res'></div></div> 
 
    <!-- remove above --> 
 
    </div> 
 
</body> 
 
</html>

你觉得呢?

+0

天哪,你在那里做了很多编码哈哈哈我真的很感谢你帮助我的时间 我会在周末看看它,以便采取适当的时间来分析它并理解它:D 我会让我知道如果设法使它工作 非常感谢你^^ –

+0

如果你是新手,它可能需要你花一段时间来围绕这个东西。如果你是新手,你可能会忽略'phpEncode',直到你认为你已经准备好进行递归。 – PHPglue

0

它非常简单,你只需要照顾几件事情。

1:每个输入字段都应该有一个名称。

2:设置形式方法是GET(送在url可见值)或POST

3(以不显示在URL发送数据):如果通过GET发送然后methods.php接收形式的数据$ _GET [ 'INPUT_FIELD_NAME']或通过POST然后$ _POST [ 'INPUT_FIELD_NAME']

+0

事情是,我没有用户作为字段,只有eventId –

0

您可以使用隐藏字段,或者如果您使用cookie或会话,那么你可以使用会话或cookie的用户

<form action="methods.php" method="post"> 
    <input type="hidden" name="txtuser" value="abc"> 
    <input type="text" placeholder="EventID"> 
    <input type="submit" value="Register"> 
</form> 

不需要将它作为参数传递给全局变量,因此您可以访问其v直接在任何页面上显示,你只需要存储它的价值并在你项目的任何地方访问它。

+0

我现在实际上要使用cookie,但无论如何,我不知道ow从那里获取用户并将其作为参数传递给if –

+0

if你使用cookie或会话,那么不需要将它作为参数传递给它的全局变量,这样你就可以直接在任何页面访问它的值,你只需要存储它的价值并访问它在项目中的任何地方。 –

相关问题