2016-06-13 14 views
2

送信ボタンをクリックすると、textareaタグの情報がajax.canの誰かのhelpme.thankyouを使ってメールに送信されます。Onclick ajaxが機能していない

$(document).on("click", "#submit-btn", function() { 
+0

あなたはクロスドメインajaxコールを行っていますか?あなたのウェブページも 'ivr.callxl.com'の一部ですか? – vijayP

+0

送信ボタンをクリックしてデフォルトの動作を行わないようにする必要があります。そうしないと、フォームが送信されます。 –

答えて

2

あなたが送信ボタンのclickイベントではなく、formsubmitイベントにフックたので問題があります。つまり、フォームはまだ正常に送信され、AJAXリクエストからの応答は無視されます。問題を解決し、標準のフォーム送信を停止するpreventDefault()を使用するformsubmitイベントに述べたように、フックとして

$(document).on("submit", "#yourFormElement", function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url: "https://ivr.callxl.com/callXLWeb/SendingEmail", 
     type: 'POST',  
     contentType: "application/json; charset=utf-8", 
     data: { comment: $("#cmessage").val() }, 
     dataType: "json", 
     success: function (data, textStatus, jqXHR) { 
      if (data.success) { 
       alert("successfully sent"); 
      } else { 
       // handle error here... 
      } 
     }, 
     error: function(jqXHR, textStatus, errorThrown){ 
      alert(jqXHR.responseText); 
      console.log("Something really bad happened " + textStatus); 
      $("#errorResponse").html(jqXHR.responseText); 
     } 
    }); 
}); 

はまたIである(trueとして)asyncプロパティが削除されたことに注意デフォルト値を設定し、オブジェクトがdataプロパティに提供され、値がエンコードされます。

また、呼び出し元のドメインがドメイン間の要求をサポートしていることを確認する必要があります。そうしないと、要求がSame Origin Policyによってブロックされます。その場合は、サーバー側で要求を行う必要があります。

+0

URLのために問題が発生する可能性がありますか?私はそれが別のドメインにあると思っていますし、CORSの問題かもしれません。 – brk

+0

@ user2181397はい、これもおそらく問題です。回答をメモに追加しました。 –

+1

@A.Wolffありがとうございます。 –

1

私はこのようにするべきだと思います。

$("#submit-btn").on("click",function() { 
    $.ajax({ 
     url: "https://ivr.callxl.com/callXLWeb/SendingEmail", 
     type: 'POST',  
     contentType: "application/json; charset=utf-8", 
     data: { comment: $("#cmessage").val() }, 
     dataType: "json", 
     success: function (data, textStatus, jqXHR) { 
      if (data.success) { 
       alert("successfully sent"); 
      } else { 
       // handle error here... 
      } 
     }, 
     error: function(jqXHR, textStatus, errorThrown){ 
      alert(jqXHR.responseText); 
      console.log("Something really bad happened " + textStatus); 
      $("#errorResponse").html(jqXHR.responseText); 
     } 
    }); 
}); 
+0

最初に、ボタンタイプを「送信」から「ボタン」に変更する必要があります。 を送信します。送信ボタンをクリックしたときに変更した後、コンソールにチェックインして、このようなエラーを表示することができます。 XMLHttpRequestはhttps://ivr.callxl.com/callXLWeb/SendingEmailを読み込めません。プリフライト要求への応答がアクセス制御チェックを通過しない:要求されたリソースに「アクセス制御許可」がない。したがって、Origin 'https://fiddle.jshell.net'はアクセスできません。 –

+0

だからあなたは別のドメインでリクエストを送信しているからです。サイト間の起源の問題を修正した場合、このコードは機能します。ありがとう –

関連する問題