我正在尝试使用ajax调用php函数。通过按钮中的onclick函数从php调用Ajax。但是,而不是值,而是调用函数add_player返回的值,我得到整个页面exec.php。 谢谢您的帮助。
index.php
echo '<script type="text/javascript" src="dragon_javascript.js"></script>';
echo '<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>';
echo '<input type="text" name="jmeno" id="jm" value="Zadej jmeno uzivatele">';
echo '<input type="text" name="prijmeni" id="pr" value="Zadej celkove body uzivatele">';
echo '<button onclick="javascript:add_user()">pridej uzivatele</button>';
javascript
function add_user() {
var player_name = document.getElementById('jm').value;
var overall_points = document.getElementById('pr').value;
$.ajax({
url:"exec.php?action=add_player",
type:'POST',
datatype:'json',
data:{
player_name:player_name,
overall_points:overall_points
},
success: function(result){
if(result=='success') alert('it worked');
else alert('did not work');
alert(result);
},
error: function()
{
alert('did not workaaa');
}
});
}
exec.php
function add_player($player_name, $overall_points)
{
// connect to database
dibi::connect([
'driver' => 'mysqli',
'host' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'draci_sipka',
'charset' => 'utf8',
]);
try
{
dibi::query('INSERT INTO player VALUES(1,Null,%s,%i)',$player_name,intval($overall_points));
}
catch (DibiException $e)
{
return 'mistake';
}
return 'success';
}
答案 0 :(得分:0)
我认为index.php
某处(未显示)有...
<?php
...
?>
...围绕echo
语句。 否则,请这样做。
如果您返回exec.php
的完整代码作为结果,则表明您 not 不会将代码包含在<?php ... ?>
标记内。那是第一问题。第二个问题是如何检索传递给脚本的实际参数。第三个问题是您如何尝试将结果发送回去。
exec.php
<?php
/* get the two passed parameters: */
$add_player = $_REQUEST['player_name']; // works for get or post requests (or $_POST['player_name'], which is post-specific
$overall_point = $_REQUEST['overall_point];
/* do computations: */
// actual computations omitted here
$result = 'success'; // or possibly 'mistake'
/* send back the result */
header('Content-Type: text/plain'); // describe the mime-type of the result
echo $result; // write out the result
最后的?>
可以省略。您还可以测试是否通过以下方式传递了预期参数:
if (!isset($_REQUEST['player_name'])) {
// error code
}
最终,您的脚本写出的才被视为Ajax请求的“返回值”。 PHP解释器会输出<?php ... ?>
标记中未包含的内容,因此,当您省略这些标记时,您的源程序本身将被写出(具有默认的mime类型)并视为返回值。