如何使用jQuery.ajax()在PHP脚本中访问从HTML页面传递的表单数据的各个值? [英] How to access individual values of form data, passed from an HTML page with jQuery.ajax(), inside a PHP script?

查看:291
本文介绍了如何使用jQuery.ajax()在PHP脚本中访问从HTML页面传递的表单数据的各个值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将表单数据传递给PHP脚本以通过JS进行处理( jQuery.ajax())。



问题是 - 我找不到一种方法来访问PHP内的单个窗体控件值(例如 $ _ POST ['zipcode'] )。



相反,我只能使用 $ _ POST ['form'] 访问数据,这是一个完整的表示形式(例如 string(89)color = red& color = blue& zipcode = 12345 ...)。



如何通过JS从HTML表单传递PHP脚本中的表单数据的单个值?



index.php(form)

 < form id =myform> 
< select name =colorid =color>
< option value =Red>红色< / option>
< option value =Green>绿色< / option>
< option value =Blue>蓝色< / option>
< / select>
< input type =textid =zipcodename =zipcode/>
< input type =submitid =submitname =submitvalue =Submit/>
< / form>

index.php(JS) type:'POST',
dataType:'html',
url:'PHPscript.php',
data:{form:$('#myform ').serialize()}
})。done(function(data){
var myJSONresult = data;
alert(myJSONresult);
});
});

PHPscript

 <?php 
if(isset($ _ POST [form])){
$ form = $ _POST [form];

$ myzipcode = $ _POST ['zipcode']; //不行;将为空或空

echo json_encode($ form);

}
?>

编辑: 邮编字段:

  $(#zipcode)。focus(function(){
if(this.value ==zipcode ){
$(this).val();
}
})。blur(function(){
if(this.value ==) {
$(this).val(zipcode);
}
});


解决方案

您需要在表单数据上使用serializeArray而不是序列化。
$ b

  data:$('#myform')。serializeArray()
code>

HTML

 < input type =hiddenname =actionvalue =submit/> 

PHP

  if(isset($ _ POST [action]))
{
// code
}


I'm passing form data to a PHP script for processing via JS(jQuery.ajax()).

Problem is - I can't figure out a way to access individual form control values inside PHP( e.g. $_POST['zipcode'] ).

Instead I can only access the data with $_POST['form'], which is an entire form represented as one long string( e.g. string(89)"color=red&color=blue&zipcode=12345..." ).

How can I access individual values of form data inside PHP script passed from a HTML form via JS?

index.php(form)

 <form id="myform">
    <select name="color" id="color">
    <option value="Red">Red</option>
    <option value="Green">Green</option>
    <option value="Blue">Blue</option>
    </select>
    <input type="text" id="zipcode" name="zipcode" />
    <input type="submit" id="submit" name="submit" value="Submit" />
    </form>

index.php(JS)

$('#myform').on('submit', function(e) {
                    e.preventDefault();
                    $.ajax({
                        type: 'POST',
                        dataType: 'html',
                        url : 'PHPscript.php',
                        data: {form : $('#myform').serialize()}
                    }).done(function(data) {
                         var myJSONresult = data;
                         alert(myJSONresult);
                    });
                });

PHPscript

<?php
if(isset($_POST["form"])){
$form = $_POST["form"];

$myzipcode = $_POST['zipcode']; // won't work; will be null or empty

echo json_encode($form);

}
?>

EDIT: The zipcode field:

$("#zipcode").focus(function(){
                    if(this.value == "zipcode"){
                        $(this).val("");
                    }
                }).blur(function(){
                    if(this.value == ""){
                        $(this).val("zipcode");
                    }
                });

解决方案

You need to use serializeArray() on the form data instead of serialize. That will submit as an array.

data: $('#myform').serializeArray()

HTML

<input type="hidden" name="action" value="submit" />

PHP

if(isset($_POST["action"]))
{
    //code
}

这篇关于如何使用jQuery.ajax()在PHP脚本中访问从HTML页面传递的表单数据的各个值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆