php文件 ajax 数据,关于javascript:将ajax发布数据发布到php文件

本问题已经有最佳答案,请猛点这里访问。

嗨,我试着用Ajax制作表单。但是我在将表单变量发送到PHP文件时遇到了一些问题。我得到错误:未定义的索引:名称。我检查chrome dev工具,发现变量正在发送。但是当echo json_编码时,我在php文件中看到了空数组。所以我不知道我在哪里犯了错。

文件MIN

var name = $('#user_name').val();

var lname = $('#user_lastname').val();

function formLogin(name, lname)

{

$.ajax({ url: 'database/register.php',

data: {

'name' : name,

'lname' : lname

},

type: 'post',

dataType:'json',

success: function(data) {

alert(data);

}

});

}

HTML表单:

Imi?:

Nazwisko:

PHP代码:

$dane = $_POST;

echo json_encode($dane);

铬DEV:

f62c0da9ac7026504acd2cf9b2ccfbe9.png

我只想知道如何在php文件register.php中回显这个变量(name,lname)。

带序列化的版本:

function formLogin() {

var dane = $('form').serialize();

$.ajax({

url: 'database/register.php',

data: {'dane': dane},

method: 'post',

success: function(data) {

console.log(data);

}

});

}

然后结果控制台:

[cc lang="javascript"]

D:\xampp\htdocs\szkola\database

egister.php:8:

array (size=1)

'dane' => string '' (length=0)

jquery-3.2.1.min.js:4xhr完成加载:post"http://localhost/szkola/database/register.php"。< /代码>

但是当我访问http://localhost/szkola/database/register.php时

我明白这一点:

D:xampphtdocsszkoladatabase

egister.php:8:数组(大小=0)空的

您能提供用于在服务器端检索数据的准确代码吗?

@Vishal我只是学习Ajax和创建一些表单等,现在我尝试使用Ajax创建表单,并向php文件发送2个输入(name,lname),然后将其回送。

您需要更改在JavaScript中定义变量的方式,并在函数内部声明变量,而不是在函数外部声明变量:

function formLogin(){

var name = $('#user_name').val();

var lname = $('#user_lastname').val();

$.ajax({ url: 'database/register.php',

data: {

'name' : name,

'lname' : lname

},

type: 'post',

dataType:'json',

success: function(data) {

alert(data);

}

});

}

您需要以同样的方式更新您的HTML(formLogin()而不是formLogin(...,...)):

Imi?:

Nazwisko:

好的,我试试看

我很喜欢你写butt,但是我在register.php中得到了空数组。我甚至连echo$_post['name']都做了,我得到了关于取消定义索引的同样错误。

试着通过做print_r($_POST)来看看你的$_POST里面是什么。

是的,它的空阵

然后,将数据发送到PHP文件时出现问题。发送前检查您的javascript数据。

我编辑了我从chrome dev添加屏幕的帖子。

当我单击提交按钮时,它可能会有所帮助,因为它不显示带有数据的警报。

你给我们看的代码一切正常。尝试通过一个GET表单测试所有东西,以使用URL参数单独测试您的PHP页面。

这很奇怪,因为在Ajax请求中,它清楚地将请求方法称为post

@vishal ye和我看到表单数据,这两个变量正在发送,我不知道为什么在php文件中得到空数组。

尝试使用method而不是type。

HTML:

Imi?:      

Nazwisko:  

JavaScript:

function formLogin() {

// Serialize the form

var data = $('form').serialize();

// Ajax call

$.ajax({

url: 'database/register.php',

data: data,

method: 'post',

dataType: 'json',

success: function(data) {

console.log(data);

}

});

}

还请记住,您请求的是一个JSON,因此您必须在PHP文件中回送一个json_encode($array),这样就不会返回一个简单的字符串。

好吧,如果我得到类型json,我就得到对象,所以当我使用$dane=$u post;echo json_encode($dane);我能这样做吗?

如果删除dataType设置,就可以在php文件中运行var_dump($_POST);,它将显示在控制台中。

不,我不能使用"$u post['name'",因为我在取消定义索引时出错,并且当我打印"$u post"时,我只是从Ajax中删除datatypa json。

如果将dataType设置为json,则只能回送JSON编码的数组,这些数组将转换为javascript对象。json_encode()将php array()转换为javascript对象({})。

当我var_dump($_post);我得到d:xampphtdocsszkoladatabase

egister.php:8:array(size=0)为空

那么Ajax调用有问题。尝试这样做:向输入(例如name和lname)添加一些name属性,而不是在JS中向这些输入声明变量,而是使用$('form').serialize();声明单个变量。在Ajax调用中,将data值设置为刚才声明的这个变量。这样就可以了。

如果有帮助,我会更新答案。

我喜欢U写,但是当我转到localhost/szkola/database/register.php时,我看到空数组,我使用json_encode

如果手动转到该PHP文件,将得到一个空数组。要测试这一点,您必须提交填写了输入的表单,否则就没有可供PHP获取的信息。

你确定吗??但当我只想在数据库中创建新的记录时,我将使用$_post['data'],但在取消定义索引时会出错。

是的,我确定。&没有$_POST['data']。您在JS中声明的data变量是序列化形式,而不是实际的$_POST项。这个变量将带来每个输入及其值。在您的PHP文件中,您可以通过每个输入的名称访问其值,比如:$_POST['name']。其他输入也一样,例如:如果要访问序列化表单的输入"",则应转到$_POST['user_email']。––$_POST['data']不存在,因为data只是一个包含每个输入的变量。

好吧,我真的想解释一下:我确信我可以轻松地打印这个变量来检查它是否正常工作。

没问题,伙计!:)

我喜欢你写,我仍然得到空数组。`$dane=$_post;echo json_encode($dane);`在控制台中,我得到这个名为和lname的对象

这就是你应该得到的。您得到的JSON响应是一个对象。您可以使用console.log(data.name)访问它的信息,它将返回name的值。

是的,我知道,但我不知道如何将这2个vars发送到register.php,我确实尝试了不同的方法,但我仍然不知道为什么我得到空数组或关于未定义索引的错误。我读了很多关于Ajax的文章,看了很多关于Ajax的教程,我认为我的代码在img上看起来很好,我看到了文章的工作,但现在我真的不知道我在哪里犯了错误。

在发出Ajax请求之前,尝试为这两个变量运行console.log。如果它们显示在控制台中,则该步骤已正确完成。如果它们没有显示在控制台中,那么您获取输入值的方式可能有问题。

另外,您说过在发出Ajax请求之后,您将在控制台中获得一个对象。对象项是否为空?因为问题出在发送Ajax请求中的错误值和将它们编码到PHP文件中的JSON之间。

好的,我在不使用Ajax的情况下创建了console.log及其工作。当我创建Ajax表单时,我得到普通对象:name:"sadasd",lname:"asdsa"。当ajax成功时,它在consol中显示对象。

那就对了,你应该从PHP文件得到确切的响应。你有什么问题吗?

我的问题是我试图在PHP文件中获取这个对象。接下来,我只想简单地做回显,但当我做JSON编码时,我得到了空数组,我不知道为什么我甚至尝试打印后,我得到了相同的空数组。当我转到localhost/szkola/database/register.php时,我只得到了[]

好吧,您是从您在php文件中编码到json的$_POST数组创建这个对象的。您可以处理这个数组并为响应生成自己的JSON。而不能显示JSON以外的任何内容的原因是,在Ajax调用中,您已经将dataType设置为json。dataType是您期望从PHP文件得到的响应。如果您删除它,您将能够获得任何类型的内容(字符串、整数等)。

您可以访问php文件中的每个$_POST项,例如$_POST['name']等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值