我正在处理 jQuery代码,如下所示,其中我试图从 jQuery的$ .ajax()函数传递 php中的数据值 。
HTML代码:
<td style="width:5%; text-align:center;"><button style="width:90px;" type="submit" name="go-button" value="Go" data-id="<?php echo $key; ?>" class=" go-btn btn btn-outline-primary">Go</button></td>
jQuery代码:
jQuery(document).ready(function($)
{
$('.go-btn').click(function()
{
let target = $(this).attr('data-id'),
spanEl = $('.file-name[data-id='+ target +']');
$.ajax({
url: 'http://abc.xyz/status.php', // http://abc.xyz/status.php is the place where all my html/php/js code is sitting.
type: 'POST',
data: {id: target}, //change to what you want
success: function(res)
{
//alert(res)
},
error: function(res)
{
alert('Hello World!')
}
})
})
});
Php代码:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") and !empty( $_POST['go-button'] ) )
{
$value = $_POST['id'];
print_r($value); // Line #A // it doesn't print any value.
foreach ($mp4_files as $f) // Line#B
{
// conversion of mp4 into mp3 is happening.
}
}
?>
问题陈述:
我已经在上面的php代码中传递了$value=$_POST['id'];
,但是在调试print_r($value);
上却没有显示任何值。
我想知道应该在php中进行哪些更改,以便能够从php中的AJAX函数传递数据值。
答案 0 :(得分:0)
问题不在于ajax,而是jquery。您正在尝试从.go-btn类获取data-id,但是如果您有多个同一个类的按钮,JS将不会检测到您按下了哪个按钮。
一种解决方案是在表上设置类,让jquery检测表中的所有按钮,如下所示:
<table class="go-table">
<td style="width:5%; text-align:center;">
<button style="width:90px;" type="submit" name="go-button" value="Go" data-id="<?php echo $key; ?>" class=" go-btn btn btn-outline-primary">Go</button>
</td> <td style="width:5%; text-align:center;">
<button style="width:90px;" type="submit" name="go-button" value="Go" data-id="<?php echo $key; ?>" class=" go-btn btn btn-outline-primary">Go</button>
</td>
然后将您的jquery更改为:
$('.go-table').on('click', '.go-btn', function()
{
let target = $(this).attr('data-id'),
spanEl = $('.file-name[data-id='+ target +']');
它应该获得data-id属性。在旁注中,如果您使用的是Ajax,则不需要在按钮上键入Submit。