Как проверить ключ в json объекте, возвращенном jquery постом? - PullRequest
1 голос
/ 21 апреля 2020

Я создал страницу в php, чтобы получить данные с сервера mysql, используя сообщение jquery. Метод post возвращает объект json. Объект json содержит ключ с именем 'warning', если запрошенная запись уже обработана. Иначе он содержит несколько пар ключ-значение из запрошенной записи. Но я не могу проверить, содержит ли объект json ключ с названием «предупреждение». В чем проблема с моим кодом?

Ниже приведена форма.

 <form id="transitentry" name="transitentry" >
      <fieldset>
           <legend>Voucher Details</legend>
           <label for "insert_id">Enter ID:</label><input type="text" id="insert_id" required/><br/>
           <label for "voucher_type">Type of Voucher</label>
           <select name="voucher_type" id="voucher_type" required>
                <option class="green" value="">----Select Voucher Type----</option>
                <option class="green" value="Invoice">Invoice</option>
                <option class="green" value="Hand Receipt">Hand Receipt</option>
                <option class="green" value="Manuscript Voucher">Manuscript Voucher</option>
           </select>
           <br/><br/>

           <label for "invoice_no">Invoice No.:</label><input type="text" id="invoice_no"/><br/>
           <label for "invoice_dt">Invoice/Receipt Date:</label><input type="text" id="datepicker" name="datepicker" value="<?php echo $dateindian; //echo date('d-m-Y');  ?>" /><input type="hidden" id="stddate" value="<?php echo $dateus; //echo date('d-m-Y');  ?>"/><br/>
           <label for "item">Item/Description:</label><input class="item" type="text" id="item" size="100" required/><br/>
           <label for "uom">Unit:</label><input type="text" id="uom" required/><br/>

           <label for "qty">Qty:</label><input type="text" id="qty" required/><br/>
           <label for "amount">Amount:</label><input type="text" id="amount" required/><br/>
           <label for "supplier">Supplier</label><input type="text" id="supplier" required/><br/>
           <label for "gst">GST :</label><input class="checkmark" type="checkbox" id="gst" value="Y"/><br/><br/>



           <div align="center"><input id="frmsubmit" type="submit" value="Submit"  /></div>
      </fieldset>
 </form>

Следующий код jquery размещен на странице для обработки сообщения

 jQuery('#insert_id').change(function(){
 var id=jQuery(this).val();

 jQuery.post("scripts/get_imprest_transaction.php",{"insert_id":id},function(data){
      if(data.hasKey("warning")){
           alert(data.warning);
      }else{
           jQuery("#voucher_type").val(data.voucher_type);
           jQuery("#invoice_no").val(data.bill_no);
           jQuery("#datepicker").val(data.dateindian);
           jQuery("#stddate").val(data.date);
           jQuery("#item").val(data.iitem);
           jQuery("#uom").val(data.uom);
           jQuery("#qty").val(data.qty);
           jQuery("#amount").val(data.amount);
           jQuery("#supplier").val(data.supplier);
      }
 });

get_imprest_transaction.php, которое отправляет json объект

 require_once('../Connections/hari.php');
 $insert_id=$_POST['insert_id'];
 mysql_select_db($database_hari,$hari);
 $sql= "SELECT * from imprest where transact_id=$insert_id";
 $result=mysql_query($sql) or die(mysql_error());
 $row=mysql_fetch_array($result);

 if (mysql_num_rows($result)==0){
      $return_data=array('msg'=>'Invalid ID or Data Not Entered');  
      header('Content-Type: application/json'); 
      echo json_encode($return_data); 
      exit();
 }else {

 //$row=mysql_fetch_array($result);

 if(is_null($row['submission_dt'])){
      $warning='This transaction is already submitted for claim. If you change data , record in the database will differ from the hardcopy submitted to F&A';
      $return_data=array( 'warning'=>$warning);

 }else{
      $dateindian= date('d-m-Y',strtotime($row['bill_dt']));
      $item=$row['item'];
      $date=$row['bill_dt'];
      $uom=$row['uom'];
      $qty=$row['qty'];        
      $amount=$row['amount'];
      $bill_no=$row['bill_no'];
      $gst=$row['gst'];
      $voucher_type=$row['voucher_type'];
      $supplier=$row['supplier'];

      $return_data=array('iitem'=>$row['item'],'date'=>$row['bill_dt'], 'uom'=>$row['uom'], 'qty'=>$row['qty'], 'amount'=>$row['amount'], 'bill_no'=>$row['bill_no'], 'dateindian'=>$dateindian, 'gst'=>$row['gst'], 'voucher_type'=>$row['voucher_type'], 'supplier'=>$row['supplier']);  }


      header('Content-Type: application/json'); 
      echo json_encode($return_data); 
      exit();
 }

1 Ответ

0 голосов
/ 21 апреля 2020

data - это объект, представляющий проанализированный JSON, возвращаемый jQuery post.
Проблема в том, что нет функции hasKey, определенной как часть этого объекта, поэтому Вы не можете вызвать data.hasKey.

Теперь, предполагая, что warning является свойством первого уровня (а не вложенным), вы можете просто заменить:

if (data.hasKey('warning'))

на :

if (data.warning !== undefined)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...