jQuery, ajax, json, ошибка синтаксического анализа php

Я пытаюсь запустить запрос ajax, но получаю ошибку синтаксического анализа. Это мой код Javascript:

$.ajax({
            type: 'POST',
            url: 'insertuser.php',
            dataType: 'json',
            data: {
                nickname: $('input[name=nickname]').val(),
                passwort: $('input[name=passwort]').val()
            },
            success : function(data){
                console.log(data);
            },
            error : function(XMLHttpRequest, textStatus, errorThrown) {
                console.log("XMLHttpRequest", XMLHttpRequest);
                console.log("textStatus", textStatus);
                console.log("errorThrown", errorThrown);    
            }
        });

Это файл php:

$return['error'] = false;
$return['msg'] = "juhuuu";

эхо json_encode ($ возврат);

Это console.log:

XMLHttpRequest Object textStatus parsererror errorThrown SyntaxError

Вот что повторяет .php: {"error":false,"msg":"juhuuu"}

Надеюсь, у кого-то есть идея :)


person user1541220    schedule 23.10.2012    source источник
comment
данные отправки от var str = $(this).serialize(); и в php parse_str($_POST["data"],$array);   -  person NullPoiиteя    schedule 23.10.2012
comment
Вы пытались добавить заголовок типа контента в свой PHP, например: header('Content-Type: application/json');?   -  person crackmigg    schedule 23.10.2012
comment
dataType jsonp и заголовок не работают.   -  person user1541220    schedule 23.10.2012
comment
Хорошо, я исправил это! :) Мне нужно было только удалить весь HTML-контент в моем php-файле, например, ‹html›, ‹body›, ‹header› и так далее... теперь это работает!   -  person user1541220    schedule 23.10.2012


Ответы (1)


Этот ответ может помочь или не помочь кому-то другому. Но у меня была аналогичная проблема с ошибкой синтаксического анализа jQuery ajax json. Моя форма не отправляла электронное письмо и возвращала ошибку синтаксического анализа через jQuery.

JQuery

 $.ajax({
    type: "POST",
    url: "process-form.php",
    data: dataString,
    dataType:"json",
    success: function(response) {

        if(response.status == "success") {

        } else if (response.status == "error") {

        }
  });

PHP

if (empty($name) || empty($email) || empty($phone) || !preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$email) || !preg_match("/^(\d[\s-]?)?[\(\[\s-]{0,2}?\d{3}[\)\]\s-]{0,2}?\d{3}[\s-]?\d{4}$/i",$phone)) {
            echo json_encode(array(
                'status' => 'error'
                //'message'=> 'error message'
            ));
        } else {
            $send = mail($sendTo, $subject, $message5, $headers, '‑[email protected]');
            $sendText = mail($sendToPhone, '', $txtmsg, 'From: example <[email protected]>\r\n');

            // insert into db
            $formName = $_POST['name'];
            $queryIn = "INSERT INTO database pseudo code";

            //execute the query. 
            $result = mysqli_query($connection, $queryIn);
            if (!$result) {
                printf("Error: %s\n", mysqli_error($connection));
                exit();
            }

        }
if($send){
            echo json_encode(array(
                'status' => 'success'
                //This is the message the .ajax() call was looking for but it never posted because there was a MySQL error being printed to the browser along with it. 
            ));
}

Моя проблема была с моей страницей PHP, на которую шел вызов ajax (process-form.php). Я отправлял данные формы по электронной почте с помощью функции PHP mail() и вставлял данные веб-формы в базу данных MySQL. Мой PHP проверяет mail() успешную отправку и выводит сообщение об успешном завершении на экран (это то, что ищет вызов jQuery .ajax(). Но мой php/mysql выдавал ошибку и печатал ошибку на экране вместо сообщения "успех", которое предполагалось для отображения. Итак, мой вызов jQuery .ajax() пытался прочитать закодированный массив PHP json_encode(), а вместо этого получал MySQL Error. После того, как я исправил ошибку MySQL, все заработало отлично.

person iRebel_85    schedule 18.03.2015