Получение буквы 'a' в функции ajax, если данные арабские - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть API, который отправляет арабские строковые данные и должен отображаться в веб-форме html, используя метод jquery $ .ajax, но, к сожалению, ajax получает только один символ, то есть 'a' в ответ, как показано ниже

{code: 200, status: "error", msg: "a", msg_en: "Invalid Username!!"}

но когда я выполняю API в почтальоне, он показывает мне это

{"code":200,"status":"error","msg":"اسم المستخدم موجود بالفعل","msg_en":"Username already exists!!"}

это мой код в check_user_name.php

<?php
require_once "../admin/utils/config.php";
require_once "../admin/utils/dbClass.php";
$objDB = new MySQLCN;
require_once "../admin/utils/functions.php";
$fun = new mFunctions;
require_once "lang.confg.php";

$response = array();

if( isset($_POST['user_name']) && $_POST['user_name'] != null){
    $user = $objDB->_get_user(null,$_POST['user_name'],null,null,null,null,array('visitor','lawyer','admin'));
    if( !empty($user) ){
        $response['code'] = 200; // successfull request
        $response['status'] = 'error';
        $response['msg'] = $_lang['user_name_exists'];
        $response['msg_en'] = 'Username already exists!!';
    }else{
        $response['code'] = 200; // successfull request
        $response['status'] = 'success';
        $response['msg'] = $_lang['user_name_available'];
        $response['msg_en'] = 'Username available!!';
    }
}else{
    $response['code'] = 200; // invalid paramters
    $response['status'] = 'error';
    $response['msg'] = $_lang['invalid_requests'];
    $response['msg_en'] = 'Invalid Username!!';
}
end:
echo json_encode($response);
exit(); 

это ajax-запрос

$(document).on("change", 'input[name=user_name]', function(e) { 
        /* Act on the event */
        var user_name = $ (this).val();
        if(user_name.length >= 6 || !user_name.length <=1 ){
            $.ajax({
                type: 'POST',
                url: HOST_URL_API+'/check_user_name.php',
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                data : { 'user_name':user_name }, // our data object
                success: function(data) {
                    console.log(data);
                    if (data.status == "error") {
                        $('input[name=user_name]').parent().addClass('has-error');
                        $('input[name=user_name]').parent().find('.help-block').html(data.msg);
                        $('input[name=user_name]').focus();
                        // alert(data.msg);
                    }else{
                        $('input[name=user_name]').parent().removeClass('has-error');
                        $('input[name=user_name]').parent().addClass('has-success');
                        $('input[name=user_name]').parent().find('.help-block').html('');
                    }
                },
                error: function(jqXHR, textStatus, errorThrown, data) {
                    alert(errorThrown);
                },
            });
            event.preventDefault();
        }else{
        // alert("Username must be at least 6 characters");
        }
    }); 

пожалуйста, если у кого-нибудь есть решение, будет большая помощь, заранее спасибо;)

Ответы [ 3 ]

0 голосов
/ 03 апреля 2019

Пожалуйста, проверьте это решение, надеюсь, что это решит вашу проблему. Я просто создаю index.php и запускаю его, включаю header("Content-type: application/json; charset=ISO-8859-1");, это решит проблему.

if (isset($_GET['dataa'])) {
    $res['code'] =200;
    $res['status'] = 'error';
    $res['msg'] = (string) "اسم المستخدم موجود بالفعل";
    $res['msg_en'] = 'Username already exists!!';
    // header ("Content-Type: text/html; charset=utf-8");
    header("Content-type: application/json; charset=ISO-8859-1");
    echo json_encode($res);die;
}

в html на той же странице и получите запрос на тестирование.резонировать и добавлять текст к телу

<!DOCTYPE html>
  <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title></title>
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

       </head>
        <body>
        <script type="text/javascript">
         $(document).ready(function(){
         $.ajax({
           url: "index.php",
           type: 'GET',
           data : {dataa : 'ss'},
            success: function(res) {
            console.log(res);
            $('body').append(res.msg);
        }
    });
  })
  </script>
</body>
</html>

ура удачи cheers good luck

0 голосов
/ 04 апреля 2019

Проблема решена, ребята, спасибо за ваши усилия, на самом деле это была ошибка кода, есть другой массив с тем же именем ключа, который заменял значение ключа массива, все еще спасибо за все ваши усилия.

0 голосов
/ 02 апреля 2019

Попробуйте добавить строку ниже в php-коде, которая может решить проблему при рендеринге символов Юникода.

header("Content-Type : application/json; charset=ISO-8859-1");
...