2016-10-05 41 views
1

私は古いサイトを更新して、しゃっくりをしています。私は、通常のフォームの提出/ありがとうページではなく、ajaxを使用する連絡フォームを書き直しています。フォームアクションはサードパーティのサイトに送信されます(私はデータを解析するPHPへのアクセス権がありません)。基本的なフォームで動作します。私がajaxを使用して送信すると、フォームは送信されますが、エラーはスローされませんが、サードパーティのコードでDBに格納されたデータは空白です。同じフォーム名、同じ値。ここに私のJSです:元submitionオンajaxでのクエリ文字列の代わりにフォームデータを使用

$("#contactForm input,#contactForm textarea").jqBootstrapValidation({ 
    preventSubmit: true, 
    submitError: function($form, event, errors) { 
     // additional error messages or events 
    }, 
    submitSuccess: function($form, event) { 
     event.preventDefault(); // prevent default submit behaviour 
     // get values from FORM 
     var fname = $("#fname").val(); 
     var lname = $("#lname").val(); 
     var email = $("#email").val(); 
     var cphone = $("#cphone").val(); 
     var comments = $("#comments").val(); 
     var address = $("#address").val(); 
     var city = $("#city").val(); 
     var zip = $("#zip").val(); 
     $.ajax({ 
      url: "https://my.serviceautopilot.com/AddEstimate.aspx?id=*************&wid=****************", 
      type: "POST", 
      dataType: 'jsonp', 
      processData: false, 
      data: { 
       fname: fname, 
       lname: lname, 
       cphone: cphone, 
       email: email, 
       comments: comments, 
       address: address, 
       city: city, 
       zip: zip 
      }, 
... 

、データがこのように見えた: form data vs query string 私はそのデータを元にフォームデータとして渡されるためと考えていますが、中にクエリ文字列の一部として、 2番目の例。私はこれを仮定して正しいですか?コードに別の問題はありますか?

私は動作しなかったフォームデータオブジェクトを使用しようとしましたが、依然としてクエリ文字列に表示され、まだ空白になりました。私は、データ型、コンテンツタイプ、processdata = falseを調整しようとしましたが、運はありません。以前はサーバー側のコードにアクセスできましたが、この種のデバッグや修正を簡単に行うことはできませんでしたが、この時点では少し失われています。皆さん、ありがとうございました。

答えて

2
dataType: 'jsonp', 

JSONPは(彼らはsrc属性を持つ<script>要素を生成することにより、作業)GETリクエストでなければならない要求します。彼らは要求の本文を含めることはできません。

POSTリクエストを行う場合はJSONPを使用しないでください。

(これは、とにかくJSONPを使用しないでください。同じ起源ポリシーを回避するための汚れたハックであり、数年前にCORSを持っていました)。

+0

コメントありがとうございます。私は本当に同じ起源の政策を回避するためにそれを使用していた。だから、別の方法があります。それは知って良いです – Speed

0

サードパーティを使用してフォームデータを収集する場合は、PostメソッドでCURLリクエストを使用する必要があります。

関連する問題