0

I am sending email and password from chrome extension to django service to check whether email and password is present in database or not. Next I have to send response from django service to java script(chrome extension).

javascript in chrome extension:

document.addEventListener('DOMContentLoaded', loginEvents, false);

function myAction(femail,fpassword) {
    //alert("femail=" + femail.value + "fpassword=" +fpassword.value);
    var strLogin = "email=" + femail.value + "&password=" + fpassword.value;
    if (femail.value == ""){
        alert("Username must be filled out");
        return false;
    }
    if (fpassword.value == ""){
        alert("Password must be filled out");
        return false;
    }
    var newxmlhttp = new XMLHttpRequest();
    var theUrl = "http://127.0.0.1:8000/polls/login/?";
    newxmlhttp.open("POST", theUrl, true);

    newxmlhttp.onreadystatechange = function() {
        if (newxmlhttp.readyState == 4){
            alert("entered");
        }
        else{
            alert("not entered");
        }

    };
    newxmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
    newxmlhttp.send(strLogin);
}
function loginEvents() {
    console.log("entered console");
    var loginSubmitButton = document.getElementById('loginSubmit')
    loginSubmitButton.addEventListener('click', 
    function(event) {
        var userEmail = document.getElementById('email');
        var userPassword = document.getElementById('password');
        myAction(userEmail,userPassword);
    });
}

views.py:

from django.http import HttpResponse
from django.http import HttpResponseRedirect, HttpResponse
from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import render
from .models import UserProfile
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def login(request):
  print(request.method)
  useremail = request.POST.get('email')
  userpassword = request.POST.get('password')
  print('email %s %s' % (useremail,userpassword))
  try:
    /* to check the data is present in database or not */ 
    entry = UserProfile.objects.get(email=useremail,password=userpassword)
    print('matched== %s %s' %(useremail,userpassword))
    return HttpResponse('hello %s' % useremail)
  except ObjectDoesNotExist:
    print('email not matched')

I am able to get the data in Django which has been sent from chrome extension but i cannot understand how to send a data from Django to chrome extension. I understand how to get data in chrome extension which was sent by Django service but i cannot understand how to send data from Django.

1 Answers1

0

You can get server response in your response handler like this:

    newxmlhttp.onreadystatechange = function() {
        if (newxmlhttp.readyState == 4){
            // Alert response
            alert(newxmlhttp.responseText);
        }
    };

UPDATE:

Add data into response, I think it will be much easyly work with JSON data:

from django.http import HttpResponse, JsonResponse
from django.http import HttpResponseRedirect, HttpResponse
from django.core.exceptions import ObjectDoesNotExist
from django.shortcuts import render
from .models import UserProfile
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def login(request):
  print(request.method)
  useremail = request.POST.get('email')
  userpassword = request.POST.get('password')
  print('email %s %s' % (useremail,userpassword))
  try:
    /* to check the data is present in database or not */ 
    entry = UserProfile.objects.get(email=useremail,password=userpassword)
    print('matched== %s %s' %(useremail,userpassword))
    return JsonResponse({"status": "ok", "message": 'hello %s' % useremail}, status=200)
  except ObjectDoesNotExist:
    return JsonResponse({"status": "fail", "message": 'email not matched'}, status=400)
Nikitka
  • 428
  • 4
  • 17
  • ok we get response in chrome extension but how data will be sent in django – Anusha Reddy Feb 21 '18 at 07:17
  • @AnushaReddy You should add data into response, look at updated answer. I placed into view response message and status. Now in JS you will be able use this data. – Nikitka Feb 21 '18 at 07:58
  • Sorry for asking again this question. Now I am getting status code 0 in chrome extensions where i am executing the above same code. But now I am using ubuntu 16.04 and chromium. – Anusha Reddy Mar 13 '18 at 13:56
  • @AnushaReddy check this https://stackoverflow.com/questions/872206/http-status-code-0-what-does-this-mean-for-fetch-or-xmlhttprequest – Nikitka Mar 14 '18 at 06:05