【问题标题】:calling to php function in seprate file from ajax not working从ajax调用单独文件中的php函数不起作用
【发布时间】:2017-01-04 07:58:42
【问题描述】:

我想通过将用户 ID 和日期与帖子进行比较来获取数据(时间)。但为了测试,我只是通过 ajax 调用 php 函数。我创建了一个单独的 php 文件(myscript.php),在其中创建了一个函数并回显了类似的内容。

function my_action(){
    echo "dasdasasdaaddad";
    $date = $_POST['date'];
    echo $date;
    return $date;
}

现在,当我点击一个按钮时,我会得到日期和用户 ID。

global $wp;
$current_url = home_url(add_query_arg(array(),$wp->request));
add_action( 'the_content', 'my_action_javascript' );
function my_action_javascript() { 
$current_user = wp_get_current_user();
$uid = $current_user->ID;
?>
<script type="text/javascript" >
    jQuery(".date").click(function(){

        clicked = this; 
    var dates= jQuery(clicked).closest("ul").find(".getdate").val();
    var item= jQuery(this).closest("li.lia");
    var date = jQuery(item).find("input.getdate").val();
    //var dates = jQuery(item).find("input.getdate").val();


    alert(date);
    jQuery.ajax({

        type:"post",
        url: "<?php $current_url;?>/myscript.php",

    data : {
        'action': 'my_action',
        'date': date,
        'userid': "<?php echo $uid?>"
    },

    // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
    success: function(data) {
            successmessage = 'Data was succesfully captured';
            $("label#successmessage").text(successmessage);
        },
        error: function(data) {
            successmessage = 'Error';
            $("label#successmessage").text(successmessage);
        },
    });
});
</script> 
<?php
}

我在 ajax url 中给出了该文件的 URL。现在它应该打印来自 myscript.php 文件的数据,但我从 ajax 得到这个结果。

Got this from the server:0

我也检查了网络,这对我来说似乎很好。 ajax 正在获取用户 ID 和日期,但响应为 0。不知道为什么?

【问题讨论】:

  • 首先确定问题出在 myscript.php 还是您的 ajax 中。如果将 myscript.php 中的$_POST 更改为$_GET,然后直接转到myscript.php?date=test,输出看起来是否正确?如果是,该 URL 是否与以下行生成的 URL 匹配:url: "&lt;?php $current_url;?&gt;/myscript.php",?

标签: php ajax


【解决方案1】:

开启 myscript.php 页面删除函数 my_action().. 因为你没有调用它。

if you want to call this before that use my_function();

<?php
my_function();
function my_action(){
 echo "dasdasasdaaddad";
$date = $_POST['date'];
echo $date;
return $date;
}

?>

【讨论】:

  • 谢谢,但结果是一样的。从服务器得到这个:0
  • 你能在php页面上写吗 print_r($_POST);并检查
  • 还是什么都没有。 ://
  • 你试过 print_r($_POST);在 myscript.php 页面上
  • 是的,我试过了。 print_r($_POST);我的函数(); function my_action(){ echo "dasdasasdaaddad"; $date = $_POST['date'];回声$日期;返回$日期; }
【解决方案2】:

你没有在 myscript.php 文件中调用你的 my_action 函数。调用你的函数你会得到你想要的结果。

<?php

function my_action(){
    echo "dasdasasdaaddad";
    $date = $_POST['date'];
    echo $date;
    return $date;
}

my_action();

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多