2017-04-07 1 views
1

그래서 내 cordova 응용 프로그램에 전자 메일 보내기 기능이 있으며 jQuery를 사용하여 전자 메일 기능을 전송합니다. 내 응용 프로그램을 디버깅 할 때 ajax 함수는 브라우저에서 테스트 할 때 잘 작동하지만 응용 프로그램을 빌드하고 내 전화에서 테스트하면 작동하지 않습니다. 이 문제는 jQuery 대신 일반 js를 사용하는 경우에만 수정 된 문제가있었습니다. 함수는 다음과 같습니다.누구나이 jQuery를 일반 js로 변환하는 방법을 알고 있습니까?

var message = localStorage.getItem("Message"); 
var key = "dJdJekCVAFIqvUJ13DEczZjgIh_4MyeIGEHz2GBYKFe"; // <<KEY 
var message_name = "defender_send_message"; // <<MESSAGE NAME 
var url = "https://maker.ifttt.com/trigger/" + message_name + "/with/key/" + key; 
$.ajax({ // <<SEND 
    url: url, 
    data: {value1: message, 
     value2: localStorage.getItem("AdminsEmail")}, 
    dataType: "jsonp", 
    complete: function(jqXHR, textStatus) { 
    console.log("Message Sent"); 
    } 
}); 

누구나 정상적인 js로 변환하는 방법을 알고 있습니까? 감사합니다

+0

"jQuery 대신"을 의미합니까? AJAX는 코드 작성과 관련된 일반적인 기술이 아닙니다. – Barmar

+0

@Barmar 그래, 나는 많은 jQuery를 사용하지 않으며 올바른 용어를 모른다 고 생각한다. 지금 내 게시물을 편집하십시오. – sparpo

+1

아마 jQuery가 앱에서 작동하지 않는 이유를 알아 내려고 노력해야합니다. 그것을 사용하는 모든 것을 다시 작성하는 것은 아마도 큰 일일 것입니다. – Barmar

답변

2

바닐라 JS를 사용하여 ajax 전화를 걸려면 XMLHttpRequest 개체를 사용해야합니다.

var message = localStorage.getItem("Message"); 
var key = "dJdJekCVAFIqvUJ13DEczZjgIh_4MyeIGEHz2GBYKFe"; 
var message_name = "defender_send_message"; 
var url = "https://maker.ifttt.com/trigger/" + message_name + "/with/key/" + key; 
var data = {}; 

data.value1 = message; 
data.value2 = localStorage.getItem("AdminsEmail"); 

var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function() { 
    if (xmlhttp.readyState == XMLHttpRequest.DONE) { 
    if (xmlhttp.status == 200) { 
     console.log("Message Sent"); 
    } 
    } 
} 

xmlhttp.open('POST', url, true); 
xmlhttp.responseType = 'jsonp'; 
xmlhttp.send(data); 
+0

"url"값이 원래 값과 같을까요? 내가 물어 보는 이유는 "열쇠"값을 사용하지 않았다는 것입니다. – sparpo

+0

@sparpo 예, URL은 동일합니다. – Barmar

+0

'xmlhttp.send'로 객체를 보낼 수 없습니다. jQuery가 일반적으로하는 URL 인코딩을 수행해야한다. – Barmar

관련 문제