【问题标题】:Hyphen not allowing jQuery AJAX call to work properly连字符不允许 jQuery AJAX 调用正常工作
【发布时间】:2015-10-05 18:31:07
【问题描述】:

问题: 通过我的addData() 函数传递的参数中有一个连字符;想想“12345678-9”。每当传递的数据有连字符时,我的应用程序上就会弹出Ajax Fail! 警报框。但是,每当我将 $_GET 变量硬编码为不带连字符的字符串或数字时,我的应用程序的这一部分就可以工作。我已将其范围缩小到连字符导致此错误的可能事实。请参阅下面的代码。


HTML


<button id="add-analysis-button" onClick="addData( $( '#click-number' ).text() )">Add Data</button>

Javascript/jQuery/AJAX


function addData(a_ship) {
$.ajax({
    type: 'GET',
    url: 'models/add-data.php?oShip=' + a_ship,
    mimeType: 'json',
    success: function(data) {
        alert( data );
    },
    error: function() {
        alert('Ajax Fail!');
    }
});

PHP(文件:add-data.php)


<?php
echo $_GET['oShip'];

我尝试过的: 我尝试过在addData() 函数中使用javascript 的替换函数将连字符替换为HTML 编号。例如:a_ship = a_ship.replace('-', '&amp;#45;')。这似乎允许代码部分工作,但随后去掉了连字符后的数字,这导致我遇到另一个问题。

问题:如何在不导致错误的情况下将连字符从 jQuery 的 AJAX 传递到?

【问题讨论】:

  • 问题可能出在返回的 JSON 中。调用失败时是什么样子的?
  • 试试:encodeURIComponent
  • 当调用失败时,我会收到“Ajax 失败!”的警告框。
  • @aCarella 不,我的意思是实际的 HTTP 响应是什么样的?
  • @CodeGodie “-” 字符不必进行 URI 编码。

标签: javascript php jquery ajax get


【解决方案1】:

改变这个:

mimeType: 'json',

到这里:

contentType: 'json',

-或者-

完全删除 mimeType 将解决此问题。

【讨论】:

  • 在看到您的回复之前,我能够解决这个问题,但尝试您的代码也可以。将此标记为正确答案,并编辑您的回复以包含对我有用的内容。
【解决方案2】:

用这个替换你的代码并用结果回复(可编辑的小提琴在这里:http://jsfiddle.net/caLu0kj9/)。请注意在 ajax 请求中添加了 dataType 并在 HTML 代码中删除了 onclick 事件。

HTML:

<div id="click-number">12345678-9</div>
<button id="add-analysis-button">Add Data</button>

JavaScript:

$("#add-analysis-button").click(function(){
    addData($( '#click-number').text());
});

function addData(a_ship) {
    $.ajax({
        type: 'GET',
        url: 'models/add-data.php?oShip=' + encodeURIComponent(a_ship),
        dataType: 'json',
        beforeSend: function(jqXHR, settings) {
            jqXHR.url = settings.url;
        },
        success: function(jqXHR, data) {
            alert("SUCCESS! " + data + " " + jqXHR.url);
        },
        error: function(jqXHR) {
            alert("FAIL! " + jqXHR.url);
        }
    });
}

【讨论】:

  • 感谢您的回复。这也不起作用,但我能够从这篇文章中获得一些想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多