Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将ajax转换为json_Javascript_Php_Json - Fatal编程技术网

Javascript 将ajax转换为json

Javascript 将ajax转换为json,javascript,php,json,Javascript,Php,Json,我正试图用json转换我的ajax代码,因为我想用这种方式。 谁能帮我做这个,因为我不知道如何正确地做?具体来说,我希望我的php代码将site\u id(是一个数字)返回给我的javascript函数,以便以后对其进行操作 以下是我的javascript代码: function load3() { var flag1 = true; do { var selection = window.prompt("Give the User Id:", "Type a n

我正试图用json转换我的ajax代码,因为我想用这种方式。 谁能帮我做这个,因为我不知道如何正确地做?具体来说,我希望我的php代码将
site\u id
(是一个数字)返回给我的javascript函数,以便以后对其进行操作

以下是我的javascript代码:

function load3() {
    var flag1 = true;
    do {
        var selection = window.prompt("Give the User Id:", "Type a number!");
        if (/^[0-9]+$/.test(selection)) {
            flag1 = false;
        }
    } while (flag1 != false);
    $("#user_id").val(selection)

    var flag2 = true;
    do {
        var selection2 = window.prompt("Give the Book Id:", "Type a number!");
        if (/^[0-9]+$/.test(selection2)) {
            flag2 = false;
        }
    } while (flag2 != false);
    $("#book_id").val(selection2)

    var flag3 = true;
    do {
        var selection3 = window.prompt("Give the Game Id:", "Type a number!");
        if (/^[0-9]+$/.test(selection3)) {
            flag3 = false;
        }
    } while (flag3 != false);
    $("#game_id").val(selection3)

    $.ajax({
        type: 'POST',
        url: 'http://127.0.0.1/PHP/mine1.php',
        data: $('#LoadGame').serialize(),
        success: function(html) {
            //do something on success?
            $('#outPut').html(html);
            var bingoValue = 4;
            if ($('#outPut').text().indexOf('' + bingoValue) > 0) {
                //alert('bingo!');
                window.location.href = 'https://support.wwf.org.uk/';
                //document.location.replace('https://developer.mozilla.org/en-US/docs/Web/API/Location.reload');
            } else {
                alert('No!');
            }
        }
    });
}
这是我的php代码,我想用json编写它:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("127.0.0.1", "root", "", "mysql3");
// Check connection
if($link === false) {
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

$user_id =$_POST['user_id'];
$book_id =$_POST['book_id'];
$game_id =$_POST['game_id'];
$site_id =$_POST['site_id'];

header('Access-Control-Allow-Origin: *');
    header('Content-Type: application/json');
    $query = "
        SELECT site_id 
        FROM components 
        WHERE user_id='$user_id' 
        AND book_id='$book_id' 
        AND game_id='$game_id' 
        ORDER BY site_id 
        DESC LIMIT 1;
    ";
    $res = mysqli_query($link,$query);
    $result = array();
    $res = mysqli_query($link,$query) or die(mysqli_error($link));
    while($row = mysqli_fetch_assoc($res)){
        $result[] = $row['site_id'];
    }
    echo json_encode($result);

// Close connection
mysqli_close($link);
?>

试试这个:

<?php
    header('Access-Control-Allow-Origin: *');
    header('Content-Type: application/json');
    $query = "
        SELECT 
            site_id 
        FROM components 
        WHERE user_id = $user_id 
        AND book_id = $book_id
        AND game_id = $game_id 
        ORDER BY site_id DESC 
        LIMIT 1;
    ";
    $res = mysqli_query($link,$query);
    $result = array();
    $res = mysqli_query($link,$query) or die(mysqli_error($link));
    while($row = mysqli_fetch_assoc($res)){
        $result[] = $row['site_id'];
    }
    echo json_encode($result);

您可以将结果存储到一个数组中(不要每次迭代都回显),然后在获得所有结果后,只需回显json_encode($result)@bryanlores即可。感谢您的帮助。所以你的意思是改变这个
echo$result使用此代码
echo json\u encode($result)
?我必须对javascript代码做些什么,否则我会让它保持原样吗?好吧,在你的javascript上,检查你得到的是否正确。然后我不确定,但可能要将其用作JSON,您需要对JSON.parse(html)进行解析,因为您还没有设置预期的响应,所以非常感谢您的帮助。事实上,它就像你的方式。但是我必须在我的javascript代码中做些什么,因为我看到我们在维护ajax技术。我必须在这方面做些更改吗?我将编辑代码,使其也包含JS代码和解决方案。好的,如果我很好地理解浏览器抱怨window.prompt自动打开的问题,那么消息本身就足以找出问题所在。但是当我们得到site_id时,您会发现这条消息。尝试使用console.log进行调试,当您看到ajax响应时,您将像访问任何其他对象(例如response.site_id)一样访问它。有时您不需要JSON.parse函数,所以您也可以尝试不使用该函数。我把链接放在上面,不使用JSON.parse函数,只做console.log(response);