2016-12-18 19 views
1

私は基礎となるDBを照会するために、いくつかのクエリ文字列パラメータを必要とするWebサービスを持っている場合、私はURLでそれらを置くべきか、私はその後、ある変数にそれらを配置することができます$ .ajaxリクエストのデータパラメータに渡されましたか?私の質問の一部は単純に - データパラメータは正確に何を表していますか?

以下のスニペットでは、targetURLがURLとして正常に渡されます。しかし、データパラメータ(data:parameters)として 'parameters'を試してみると、呼び出しは失敗します。

function JSONTest() { 
 

 
     //var targetURL = "http://localhost:49633/compass/compatability/webservices/SearchDatabase.ashx?mode=contact&searchvalue=" + encodeURI(document.getElementById("jsonInput").value) + "&format=json"; 
 
     var targetURL = "http://localhost:49633/compass/compatability/webservices/SearchDatabase.ashx"; 
 
     var parameters = "mode=contact&searchvalue=da&format=json"; 
 

 
     document.getElementById("targetURL1").innerText = targetURL; 
 
     document.getElementById("ResultTable").innerHTML = ""; 
 

 
     $.ajax({ 
 
      type: "POST", //rest Type 
 
      url: targetURL, 
 
      data: parameters, 
 
      async: false, 
 
      contentType: "application/json; charset=utf-8", 
 
      dataType: "json", 
 
      complete: function (jqXHR, textStatus) { 
 
       jsonResponse = $.parseJSON(jqXHR.responseText); 
 
       for (i = 0; i < jsonResponse.length; i++) { 
 
        if (i % 2 == 0) { 
 
         createTableRow(i, "tableRow"); 
 
        } else { 
 
         createTableRow(i, "tableRowAlternating"); 
 
        } 
 
       } 
 
       document.getElementById("ReturnTest2").style.display = "block"; 
 
      } 
 
     }); 
 
    };

+0

データプロパティがサーバーに送信されたものです....しかし、あなたはURLエンコード文字列とのJSONのcontentTypeを混合している....だから何種類となっているasync: false,を使用することはありませんあなたは実際にサーバーで受信することを期待していますか? – charlietfl

答えて

0

あなたのcontentTypeが、あなたはその後、

var data = { 
    mode: 'contact', 
    searchvalue: 'da', 
    format: 'json' 
} 
var parameters = JSON.stringify(data); 

そのオブジェクトを文字列化オブジェクトを開始することにより、JSONにURLエンコード文字列からデータを変更する必要が暗示するように送られたJSONをしたい場合サーバーで標準形式のエンコードされたデータが必要な場合は、次を削除してください。

contentType: "application/json; charset=utf-8", 

はまた、今までそれが廃止されており、常に恐ろしい練習

+0

それでは、データを使用してJSONをサーバーに送信します.QueryStringでパラメータを送信する必要がある場合は、URLに配置する必要がありますか? –

+0

あなたが 'GET'を使用していない場合、jqueryはそれらをあなたのためにURLに入れます。また、ポット内の送信データのデフォルトは、*アプリケーション/ x-www-form-urlencodedでされるJSONされていません* – charlietfl

+0

これは正しいですか? {モード:「接触」、searchvalue:「DA」、形式:「JSON」は}クエリ文字列パラメータに変換されないとしないGET、POSTを使用している場合、それは次のようになりモード=コンタクト&searchvalue = DA&フォーマット= JSON –

関連する問題