Ajax从php获取结果整个页面

时间:2020-08-16 18:30:50

标签: javascript php jquery ajax

我正在尝试使用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';
     
}

1 个答案:

答案 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类型)并视为返回值。