gpt4 book ai didi

javascript - Ajax 发送数据但 php 没有收到它

转载 作者:行者123 更新时间:2023-11-30 00:07:45 24 4
gpt4 key购买 nike

我正在使用 ajax 将数据发送到 php 函数。最终目标是根据 $tweetdate 显示数据行。这是我的 ajax 脚本:

jQuery('#bootstrapModalFullCalendar').fullCalendar({
dayClick: function(date, event, jsEvent, view) {
var date = date.format();
jQuery.ajax({
type: "POST",
url: ajaxurl,
data: {
'action': 'show_scheduled_tweets',
'tweetdate': date
},
beforeSend: function() {
console.log('before')
},
success: function(){
console.log('success')
},
error: function(){
console.log('error')
},
});
}
});

这是我的 php 函数(add_action 用于 WordPress 使用):

<?php
add_action('wp_ajax_show_scheduled_tweets', 'show_scheduled_tweets');
function show_scheduled_tweets () {
global $wpdb;
$tweetdate = $_POST["tweetdate"];
$query = "SELECT * FROM wp_tweettweet WHERE tweetdate='$tweetdate'";
$results = $wpdb->get_results($query, ARRAY_A);

foreach($results as $result) {
$tweet2 = $result[text];
$recycleOption = $result[recycle];
$id = $result[id];

$currentDateTime = $result[time];
$time = date('h:i A', strtotime($currentDateTime));


?>

<form class="tweetclass form-inline" action="" method="post">
<input type="checkbox" name="recycle" <?php if($recycleOption == 1){ echo "checked";} ?>>Recycle Tweet?
<input class="tweetinput" type="text" name="tweetupdate" value="<?php echo $tweet2; ?>">
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input type="text" name="timepicker" class="timepicker" value="<?php echo $time; ?>"/>
<input class="tweetsubmit" type="submit" value="Save">
<input class="tweetdelete" type="submit" value="delete">
</form>
<?php
}
}
show_scheduled_tweets();
?>

fullCalendar 是一个 jQuery 事件日历。当用户单击某一天 (dayClick) 时,该日期将被保存到日期。该日期是我试图在我的 ajax 中保存到“tweetdate”的日期。

在 chrome 中,当我使用检查器上的网络选项卡时,我可以看到 ajax 结果并且点击的日期设置为“tweetdate”。我的 php 函数没有接收到它。在我的 php 中,"tweetdate" 没有得到分配给它的值。

现在,如果我进入我的 php 函数并将“tweetdate”设置为实际日期而不是 $_POST["tweetdate"];,例如2016-06-15 比一切都完美。

我不太确定发生了什么。

最佳答案

要让它发挥作用,您还需要一件必不可少的东西:

add_action('wp_enqueue_scripts', 'my_custom_scripts'); 
my_custom_scripts(){
// Here you register your script for example located in a subfolder `js` of your active theme
wp_enqueue_script( 'ajax-script', get_template_directory_uri().'/js/script.js', array('jquery'), '1.0', true );
// Here you are going to make the bridge between php and js
wp_localize_script( 'ajax-script', 'my_ajax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}

看到 'ajax-script'wp_enqueue_script()wp_localize_script() 这两个函数中......

然后您将在 js 中检索 'ajaxurl''my_ajax' 组合在 url:my_ajax.ajaxurl,:

jQuery(document).ready(function($) {

jQuery('#bootstrapModalFullCalendar').fullCalendar({
dayClick: function(date, event, jsEvent, view) {
var date = date.format();
jQuery.ajax({
type: "POST",
url: my_ajax.ajaxurl,// Here 'my_ajax' & 'ajaxurl' from wp_localize_script()
data: {
'action': 'show_scheduled_tweets',
'tweetdate': date
},
beforeSend: function() {
console.log('before')
},
success: function(){
console.log('success')
},
error: function(){
console.log('error')
},
});
}
});
});

现在您可以在您的 php 中获取 $_POST["tweetdate"];!!!


更新:可能您需要添加到您的 php 函数(用于前端):

add_action('wp_ajax_nopriv_show_scheduled_tweets', 'show_scheduled_tweets');

然后到 die(); 在函数的最后。所以你将拥有:

add_action('wp_ajax_show_scheduled_tweets', 'show_scheduled_tweets'); // backend
add_action('wp_ajax_nopriv_show_scheduled_tweets', 'show_scheduled_tweets'); // fronted
function show_scheduled_tweets () {
global $wpdb;
$tweetdate = $_POST["tweetdate"];
$query = "SELECT * FROM wp_tweettweet WHERE tweetdate='$tweetdate'";
$results = $wpdb->get_results($query, ARRAY_A);

foreach($results as $result) {
$tweet2 = $result[text];
$recycleOption = $result[recycle];
$id = $result[id];

$currentDateTime = $result[time];
$time = date('h:i A', strtotime($currentDateTime));


?>

<form class="tweetclass form-inline" action="" method="post">
<input type="checkbox" name="recycle" <?php if($recycleOption == 1){ echo "checked";} ?>>Recycle Tweet?
<input class="tweetinput" type="text" name="tweetupdate" value="<?php echo $tweet2; ?>">
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input type="text" name="timepicker" class="timepicker" value="<?php echo $time; ?>"/>
<input class="tweetsubmit" type="submit" value="Save">
<input class="tweetdelete" type="submit" value="delete">
</form>
<?php
}
die(); // very important to get it working
}

更新 2:重要! — 这次应该可以了!

  • 我犯了一点打字错误:
    它是 add_action('wp_ajax_nopriv_ … 而不是 add_action('wp_ajax_no_priv_ …

  • 这些 php 代码需要在您的事件主题(或子主题)的 function.php 文件中。

然后您将在其他地方调用您的函数,或者您可以使用一些 add_action() Hook 来 Hook 它。

show_scheduled_tweets();

引用资料:

关于javascript - Ajax 发送数据但 php 没有收到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com