JavaScript/PHP-结束循环

时间:2019-06-03 作者:Shaun21uk

我在PHP文件中嵌入了一个HTML表单,其中有一个onclick按钮,可以调用javascript函数。

<form name="addStamp">
    Validation Code:<br>
    <input type="number" name="inputcode"><br>
    <input type="text" name="message" id="message"><br>
    <input type="button" name="submitbutton" value="Submit" onClick="stampme()">
</form>
该函数查看“inputcode”字段中的条目,并:

如果有效,则返回单词“valid如果void返回单词,则输入“message”字段failed“输入到填充表单的“消息”字段中:

document.addStamp.message.value = msg;
document.addStamp.inputcode.value = "";
} else if (document.addStamp.inputcode.value != test) {
document.addStamp.message.value = msg2;
}
我现在不知道的是如何将结果返回到php中,以便使用它执行update_user_meta 任务

所有这些都是在不刷新页面的情况下发生的,我需要在不刷新页面的情况下将javascript函数的结果返回到php中。

有什么帮助吗?

2 个回复
SO网友:Antti Koskinen

也许你可以admin ajax 或者WP REST API 向服务器发送用户元更新请求。

如果您查看了WP文档(上面的链接)或WPSE上的类似问题,您可以找到如何执行的示例。

  1. Update user meta with ajax https://wordpress.stackexchange.com/search?q=Update+user+meta+ajax
  2. Update user meta with rest api https://wordpress.stackexchange.com/search?q=Update+user+meta+via+REST+API%3F

SO网友:Andrea Somovigo

您需要一个ajax调用来执行服务器端功能。

因此,在stampme()中,在显示消息之前或之后,您需要以下内容:

    jQuery.ajax({
      url: ajaxurl,
      data: {
        action: \'WPSE_339452_update_user_meta\',
        value: jQuery(\'input[name="inputcode"]\').val() //if that\'s the value you want to save...
      },
      success: function (result) {
        console.log(result)  
        // whatever JS based on the result that can be true / false 
      },
      error: function (errorThrown) {
        console.log(errorThrown);
      }
    })
在服务器端,您必须定义自定义ajax挂钩来更新user\\u元值:

function WPSE_339452_update_user_meta (){
    $_value=$_REQUEST[\'value\'];
    $_user=wp_get_current_user();       
    die(update_user_meta($_user->ID,"my_user_meta_field",$_value)); 
  /* the return of update_user_meta can be 
     true= value updated, 
     false = value not updated since it was the same as the old value 
     in this case it won\'t update */
}
add_action ("wp_ajax_WPSE_339452_update_user_meta","WPSE_339452_update_user_meta");