【问题标题】:Passing Parameters in Ajax to JSON web service将 Ajax 中的参数传递给 JSON Web 服务
【发布时间】:2013-03-08 03:59:07
【问题描述】:

我正在使用 AJAX 从 PHP 构建的 Web 服务请求一些信息,但是我传递的参数似乎没有转到我的代码如下的 Web 服务:

$(document).on( "pageinit", "#player", function( e ) {
var passedId = (passDataObject.selectedHref != null ? passDataObject.selectedHref :    window.location.href).replace( /.*id=/, "" );
alert(passedId); // test passedId has the correct value within it 
var surl =  "a working url";
$.ajax({
    type: "GET",
    url: surl,
    data: "&Track="+passedId,
    dataType: "jsonp",
    cache : false,
    jsonp : "onJSONPLoad",
    jsonpCallback: "trackcallback",
    crossDomain: "true",
    success: function(response) {
       alert('tracks function');
    },
    error: function (xhr, status) {           
       alert('Unknown error ' + status);
    }       
 });        
});

//callback function for player page
function trackcallback(rtndata) 
{ 
alert(rtndata.track_name); // show up as undefined 
}

passedId 中的值正确且 URL 正常,但是即使 SQL 语句正常,Web 服务也不会产生结果。我假设问题出在我的 php Web 服务 $id = $_REQUEST['Track']; 的这一行内,因为它从 JavaScript 获取值以执行 SQL。 谁能解决这个问题?

【问题讨论】:

  • 尝试将 "&track=".passedId 附加到 url,如 url:surl."&track...
  • data: 'Track='+passedID 代替。 & 仅在您附加多个查询参数时才需要 - 这将产生&Track=XXX 的查询值,并最终为$_GET['&Track']
  • 你用data: {'Track':passedId},试过了吗
  • 你也在看萤火虫或开发者工具中的请求吗?
  • @Shaanimal 我正在使用萤火虫

标签: php javascript jquery json


【解决方案1】:

看下面这段代码,参数名前没有“&”:

           $.ajax({
                url: homeUrl + "/Getsomething",
                data: "parameterhere=" +$(element).attr('attrHere'),
                type: 'GET',
                contentType: "application/json",
                dataType: "json",
                cache: false,
                success: function (result) {  
                    //do stuff
                },
                error: function (xhr, ajaxOptions, thrownError) {
                    //error handling
                }
            });

如果你像上面的代码那样使用 ajax 会发生什么?

【讨论】:

  • @jjay25 这些函数似乎都没有给参数赋值似乎没有到达 php 页面
  • 实际上我打印了从 ajax 请求中获取的值,并且该值正在到达 Web 服务它只是没有得到查询结果
  • 事实上这是我的查询$query = "SELECT * FROM track WHERE track_id='$id'"; 请注意$id = $_REQUEST['Track']; 似乎工作正常
  • 好的,所以要澄清参数值是通过网络服务,参数值是通过您的查询?
  • 是的,实际上我解决了 Web 服务本身的问题,而不是真正的 ajax 代码,似乎我的陈述一直都是正确的。
猜你喜欢
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 2015-08-24
  • 2011-02-02
  • 1970-01-01
  • 2018-12-06
相关资源
最近更新 更多