首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法将var从php wp_ajax传递到ajax脚本:结果未定义或空

无法将var从php wp_ajax传递到ajax脚本:结果未定义或空
EN

WordPress Development用户
提问于 2021-02-25 09:22:55
回答 1查看 176关注 0票数 0

我不明白为什么在尝试将php错误从注册表单传递到ajax脚本时总是得到一个空的或未定义的响应。我工作在一个自定义插件添加登录,注册和仪表板与文件夹。

历史记录:我创建一个ajax注册表单,为我想要创建的每个字段创建一个错误(如果有错误),并在字段下面显示它。

我尝试使用basic ($_POST)、json_encodewp_send_json_error。每次我在console.log中得到一个空的或未定义的响应。

我知道我的ajax脚本可以工作,因为数据$_POST很好地传递。但我不能解决我的问题或者我不知道我怎么处理Json!

我读过ajax,并且跟踪了很多关于相同问题的文档,但没有结果。

目前基本的东西不起作用,你能帮我一下吗?

我使用相同的js/ajax文件进行登录、注册和仪表板。会有冲突吗?

现在我只想测试用户名

phpforajax.php

代码语言:javascript
运行
AI代码解释
复制
wp_localize_script('ajax', 'wpAjax', array('ajaxUrl' => admin_url('admin-ajax.php')));
wp_enqueue_script('data-login', plugins_url('', LQUSER) . '/data/ajaxdata.js', array('jquery'), '1.0', true);

add_action('wp_ajax_add_new_user','add_new_user');
add_action('wp_ajax_nopriv_add_new_user','add_new_user');
function add_new_user(){
        

    if (isset($_POST['registr_submit']) && wp_verify_nonce($_POST['csrf'], 'csrf')) {
        
    // User data registration
    $username       = $_POST['username'];
    /*
    $firstname      = $_POST['firstname'];
    $lastname       = $_POST['lastname'];
    $email          = $_POST['email'];
    $newpassword    = $_POST['newpassword'];
    $confirmpassword= $_POST['confirmpassword'];
    $roleuser       = 'subscriber';
    verify only username
    */
if(empty($username)){
    $data = [];
    $data['success'] = false;
    $data['message'] = 'Username is required';

    echo json_encode($return);
}
// before to use wp_send_json_error I must find my mistake or my forgetting
//if i use wp_die(); the form isn't pass to ajax
}

my_registration_form.php

代码语言:javascript
运行
复制

ajaxdata.js

代码语言:javascript
运行
AI代码解释
复制
$(function(){
            $('#registr_submit').on('click', function(e){
                e.preventDefault();
                $.ajax({ 
                    url     : wpAjax.ajaxUrl,
                    data    : {action:'add_new_user'},
                    type    : 'POST',
                    dataType: 'json',
                    success : function(response){
                        var data = $.parseJSON(response);
                        // below work and display input 
                        console.log(username);
                        // below doesn't work 
                        if(data.success == false){
                            console.log(response.message); //must display : Username is required.
                        
                  
                        }
                    }
                });
    
            });
EN

回答 1

WordPress Development用户

发布于 2021-02-26 06:35:43

非常感谢汤姆和莎莉。我的问题确实是不能将registr_submit发送到。实际上,我不太了解ajax,现在它很好。我认为序列化输入字符串表单已经足够获得提交值了。主要是我确信php发送到jquery/ajax,而它显然正好相反。因此,为了:

ajaxdata.js:

代码语言:javascript
运行
AI代码解释
复制
$(function(){
      $('#registr_submit').on('click', function(e){
                e.preventDefault();
                var userdata = $('#my_registration_form').serialize();
            userdata += '&action=add_new_user®submit=registr_submit';
        
            var username = $('#username').val();
                $.ajax({ 
                    url     : wpAjax.ajaxUrl,
                    data    : userdata,
                    type    : 'POST',
                    dataType: 'json',
                    success : function(response){
                        if(username == ''){
                           if(response.success == false) {
                            
                              $('#error-emp-name').html(response.data);
                           }
                        }
                        else{
                            if(response.success == true) {
                                $('#error-emp-name').html('Correcte');
                            }
                        }
                        
                  
                   }
               }
          });
    
      });

phpforajax.php:

代码语言:javascript
运行
AI代码解释
复制
wp_localize_script('ajax', 'wpAjax', array('ajaxUrl' => admin_url('admin-ajax.php')));
wp_enqueue_script('data-login', plugins_url('', LQUSER) . '/data/ajaxdata.js', array('jquery'), '1.0', true);

add_action('wp_ajax_add_new_user','add_new_user');
add_action('wp_ajax_nopriv_add_new_user','add_new_user');
function add_new_user(){
        

    function add_new_user(){
    global $wpdb;       

    if (isset($_POST['regsubmit']) && wp_verify_nonce($_POST['csrf'], 'csrf')) {
        
    $username       = $_POST['username'];
    $firstname      = $_POST['firstname'];
    $lastname       = $_POST['lastname'];
    $email          = $_POST['email'];
    $newpassword    = $_POST['newpassword'];
    $confirmpassword= $_POST['confirmpassword'];
    $roleuser       = 'subscriber';
    
    if (empty($username)) {     
        wp_send_json_error('Username is required'); 
    }else{
        wp_send_json_success('Ok');
    }
    
}
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/384086

复制
相关文章
ASP.NET将Session保存到数据库中
因为ASP.NET中Session的存取机制与ASP相同,都是保存在进行中, 一旦进程崩溃,所有Session信息将会丢失,所以我采取了将Session信息保存到SQL Server中,尽管还有其它的 几个方式(本文不作介绍),要将Session保存到SQL Server中,需要有以下几个步骤: 1.首先要创建用于保存Session数据的数据库,以命令行的形式用aspnet_regsql.exe来完成,具体命令为 C:\WINDOWS\Microsoft.NET\Framework\v2.0.5072
磊哥
2018/04/26
2.6K0
ASP.NET MVC的Model元数据与Model模板:将”ListControl”引入ASP.NET MVC
我们不仅可以创建相应的模板来根据Model元数据控制种类型的数据在UI界面上的呈现方法,还可以通过一些扩展来控制Model元数据本身。在某些情况下通过这两者的结合往往可以解决很多特殊数据的呈现问题,我
蒋金楠
2018/01/15
4.9K0
ASP.NET MVC的Model元数据与Model模板:将”ListControl”引入ASP.NET MVC
ASP.NET MVC 4 - 测试驱动 ASP.NET MVC
测试驱动 ASP.NET MVC Keith Burnell 下载代码示例 模型-视图-控制器 (MVC) 模式的核心是将 UI 功能划分成三个组成部分。模型表示您的领域的数据和行为。视图管理模型的显示并且处理与用户的交互。控制器协调视图和模型之间的交互。通过这样将本质上就难于测试的 UI 逻辑与业务逻辑分离开来,使得使用 MVC 模式实现的应用程序非常易于测试。在本文中,我将论述用于增强您的 ASP.NET MVC 应用程序的可测试性的最佳做法和技术,包括如何建立您的解决方案的结构、设计代码架构以便处理依
张善友
2018/01/22
5.5K0
ASP.NET MVC 4 - 测试驱动 ASP.NET MVC
ArrayList List<T> T[] Array
不保证会对 ArrayList 排序。 在执行需要对 ArrayList 排序的操作(如 BinarySearch)之前,必须对 ArrayList 进行排序。
lulianqi
2018/08/30
4230
ArrayList List<T> T[] Array
js 将数据保存到本地
name 文件名 data 数据 type mime类型 saveAs: function (name, data, type) { const element = document.createElementNS("http://www.w3.org/1999/xhtml", "a"), ev = document.createEvent("MouseEvents"), urlObject = window.URL || window.webkitURL || wi
路过君
2020/08/28
6.4K0
java操作redis: 将string、list、map、自定义的对象保存到redis中
import java.util.HashMap; import java.util.List; import java.util.Map; import redis.clients.jedis.Jedis; public class redis { public static void main(String[] args) { // 连接redis服务 Jedis jedis = new Jedis("127.0.0.1", 6379); // 密码验证-如果你没有设置redis
似水的流年
2018/01/14
4K0
java操作redis: 将string、list、map、自定义的对象保存到redis中
import java.util.HashMap; import java.util.List; import java.util.Map; import redis.clients.jedis.Jedis; public class redis { public static void main(String[] args) { // 连接redis服务 Jedis jedis = new Jedis("127.0.0.1", 6379); // 密码验证-如果你没有设置redis
似水的流年
2018/01/18
6K0
ASP.NET结合MVC+EF T4模板写后台管理系统框架(5)- 创建数据库
其实网站就是一座连接用户和数据库的梁桥 数据库通过网站,将信息以不同的方式,展现给客户,客户通过网站,对数据库进行各种操作 下面,我们用一个例子,给大家展示下基本的增删改查操作 创建数据库 创建数据模型,并根据模型生成数据库 输入数据库信息,生成数据库 记得选择是 点击完成后,会生成sql语句,右键,执行 出现这条信息,说明执行成功,至此,数据库创建完成
骤雨重山
2022/01/17
5780
ASP.NET结合MVC+EF T4模板写后台管理系统框架(5)- 创建数据库
java操作redis: 将string、list、map、自定义的对象保存到redis中
import java.util.HashMap; import java.util.List; import java.util.Map; import redis.clients.jedis.Jedis; public class redis { public static void main(String[] args) { // 连接redis服务 Jedis jedis = new Jedis("127.0.0.1", 6379); // 密码验证-如果你没有设置redis
似水的流年
2019/12/06
1.1K0
将所有对象存到数据库中在Shop.m中
如果将字典或数组直接存储在数据库中,会将数组或字典转化成字符串,所以可以使用归档与反归档的方法将数据进行编码和解码成二进制数据进行存储,而在数据库中需要使用blob类型存储二进制数据。
hrscy
2018/08/30
1.4K0
数据库查询出的数据list 集合,转为json 的形式存到redis
数据库查询出的数据list 集合,转为json 的形式存到redis, 写一个接口,直接查询redis ,将数据返回;
一写代码就开心
2023/02/13
5960
将查询结果保存到excel中
<?php //****************连接数据库*************** $localhost=”localhost”; $root=”root”; // 用户 $databasen
苦咖啡
2018/05/07
1.7K0
ASP.NET MVC Section
本篇文章我们来讨论一下ASP.NET MVC框架中的Section。 Section主要用于将一部分代码插入到 Layout页面中的指定位置。通俗地说就是,我们先在 Layout页面中通过@RenderSection("Header")的方式挖一个坑,告诉下面的视图页面说,我这个地方有个坑,你们把你们各自相关的代码放进来吧。然后,使用该Layout的视图页面通过如下的方式将一坨坨的代码送到Layout的坑中。
全栈程序员站长
2022/09/15
7690
如何将Excel和xml文件数据保存到数据库
Inherits System.Windows.Forms.Form     Dim DS1 As New System.Data.DataSet     Dim DS2 As New System.Data.DataSet
Java架构师必看
2021/03/22
2.1K0
ServiceStack.Host.MVC vs ASP.NET MVC
ServiceStack.Host.MVC vs ASP.NET MVC解决方案解决方案子项ServiceStack.Host.MVC(3.9.71)ASP.NET MVC(3.0)路由 路由规则1.只能配置/home/{name}/{page}形式 2.不能对匹配区域({name})指定任何形式的通配符(正则,等等)1.可配置各种形式的规则,比如:home/{name}_{page} 2.可以对匹配区域({name})指定正则匹配路由匹配url->路由表->RequestDTO->根据request.me
KenTalk
2018/09/11
9170
JSONArray转换成List<T>
这个是针对mybatis中json对象映射成实体类的需求,mybatis通过(typeHandler = FastjsonTypeHandler.class)会把数据库类型是json的转换为List类型,但是本质上没有变。打印出来会是这样:
全栈程序员站长
2022/09/07
1K0
ASP.NET MVC升级到ASP.NET Core MVC踩坑小结
ASP.NET Core是微软新推出的支持跨平台、高性能、开源的开发框架,它的优势不必多说,因为已经说得太多了。当然,现在依然有着数量庞大的系统运行于.NET Framework上,由于有大量的Break Changes,很多项目项目团队也不敢贸然升级,其中的考量也不全部是技术原因,更多的可能还是业务推进因素。
AI.NET 极客圈
2020/05/18
2.4K0
ASP.NET MVC使用javascript
@if (IsSectionDefined(“SubMenu”)) { @RenderSection(“SubMenu”, required: false) }
全栈程序员站长
2022/09/15
8590
ASP.NET MVC Action Filters
在看这篇Fun with Http Headers in ASP.NET MVC Action Filters的时候,提到了 Roni Schuetz在codeplex上创建的一个项目ASP.NET MVC Action Filters。计划在5月10日推出第一个版本。 项目计划包含的Action Filter: Action filter for creating easy REST API with JSON and XML Action filter for logging scenarios
张善友
2018/01/22
8630
ASP.NET MVC HtmlHelper类
ASP.NET MVC之 HtmlHelper 在ASP.NET MVC项目的开发中,一般会默认使用Razor视图来进行View层的编写,从而实现高效率的C#/HTML代码的混写。 示例 诸如下述代码
李郑
2018/03/01
1.9K0
ASP.NET MVC HtmlHelper类

相似问题

将List<T>保存到XML文件

62

ASP.Net MVC 3 DataAnnotations验证List<T>

24

从List<T>保存到txt

71

ASP.NET MVC2 List<T>模型验证

11

ASP.NET MVC 3 List<T>到IEnumerable<SelectListItem>

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档