1

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'] = "じゅふうう";

echo json_encode($return);

これは console.log です:

XMLHttpRequest オブジェクト textStatus パーサーエラー errorThrown SyntaxError

それが.phpがエコーするものです: {"error":false,"msg":"juhuuu"}

誰かがアイデアを持っていることを願っています:)

4

1 に答える 1

0

この答えは、他の誰かを助けるかもしれないし、助けないかもしれません。しかし、jQuery ajax json parse エラーで同様の問題が発生しました。私のフォームは電子メールを送信せず、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, '‑fexample@example.com');
            $sendText = mail($sendToPhone, '', $txtmsg, 'From: example <noreply@example.com>\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. 
            ));
}

私の問題は、ajax 呼び出しが ( process-form.php) に向かう PHP ページにありました。PHPmail()関数を使用してフォームデータをメールで送信し、Webフォームデータをデータベースに挿入していましたMySQL。私のPHPはmail()送信の成功をチェックし、成功メッセージを画面に出力します(これはjQuery .ajax()呼び出しが探しているものです。しかし、私php/mysqlはエラーをスローし、表示されるはずの「成功」メッセージの代わりにエラーを画面に出力していました.私の呼び出しはエンコードされjQuery .ajax()た配列を読み込もうとしていたのですが、代わりに取得していました.MySQLエラーを修正すると、すべてが完全に機能しました.PHP json_encode()MySQL Error

于 2015-03-18T04:44:46.877 に答える